C++类中的static和const用法实例教程_C 语言

static和const是C++程序设计中非常重要的概念,本文实例列举了C++类中的static和const的规则和用法。供大家参考借鉴。具体说明如下:

首先以代码用来举例说明。示例代码如下:

class A
{
public:
  A():m(10)         //const成员必须在构造函数的初始化构造列表中初始化
  {
    q = 40;
  }

  void fun1()const
  {
    m++;         //错误。const成员是常量,不能改变其值。
    n++;         //正确。static变量n属于类,但是每个对象的函数都可以访问和改变它。
    q++;         //错误。const成员函数不能改变数据成员的值。
  }
  static void fun2()
  {
    m++;         //错误。const成员是常量,不能改变其值。
    n++;         //正确。static成员函数可以访问和改变static变量的值。
    q++;         //错误。static成员函数不能访问和改变非static数据成员的值。
  }

  const int m;
  static int n;
  static const int p;
  int q;
};

int A::n = 5;        //static 成员必须在类外初始化,此时不用加关键字static,但是要指定类作用域 A::
const int A::p = 30;     //static const 成员跟static成员一样在类外初始化(而不是在构造函数初始化列表中),记得加上关键字const

接下来进行详细说明。

一、static关键字

1.static 数据成员

static数据成员是属于类的,不是属于任何具体的对象的,不占用对象的内存空间。可以用 A::n 的形式访问,也可以通过对象访问(虽然不属于具体对象,但是所有对象共有)。

static数据成员的初始化必须在类外初始化,采用 int A::n = 5;这样的形式,记得指明类型和所属的类,不用加关键字static。

2.static成员函数

static成员函数只能访问static数据成员或者static成员函数,不能访问非static数据成员和非static成员函数。

二、const关键字

1.const数据成员

必须在构造函数初始化列表中进行初始化。原因可以理解有以下两点。

(1)类的成员不能在声明初始化,比如在类体内 int c = 3;是不行的。

(2)不能在成员函数中赋值,因为const不能被改变。

2.const成员函数

const成员函数可以访问所有数据成员,但不能改变对象任何一个数据成员的值,但是可以改变static成员的值(static成员属于类,不属于具体对象)

3.const对象

const A a;

const对象只能调用const成员函数,只能改变static成员。

三、static const关键字

首先要记住,static const 表示既是static也表示const,都具有二者的特征。

static const int p;//和const static int p;是一样的。

初始化跟static成员一样,在类外初始化,但是要加上const。

const int A::p = 30;

希望本文所述对大家的C++面向对象程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, static
, const
用法
c语言 const static、c语言const用法、c语言中const的用法、c语言中static的用法、c语言static用法,以便于您获取更多的相关知识。

时间: 2024-11-05 20:46:17

C++类中的static和const用法实例教程_C 语言的相关文章

MFC之ComboBox控件用法实例教程_C 语言

本文以实例形式较为详细的讲述了MFC中ComboBox控件的用法.分享给大家供大家参考之用.具体方法如下: 一.ComboBox简介: ComboBox控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本. 从工具栏中拖一个Combo Box控件.右击添加变量,变量名为cbBox. 二.用法: 1.为控件添加选项,指定默认选项 cbBox.AddString(_T("one")); cbBox.AddString(

C语言变量类型与输出控制用法实例教程_C 语言

本文实例讲述了C语言变量类型与输出控制用法,有助于读者很好的对其进行总结与归纳.该实例分享给大家供大家参考借鉴之用.具体如下: 完整实例代码如下: /********************************************** **<Beginning C 4th Edition>Notes codes ** Created by Goopand ** Compiler: gcc 4.7.0 *******************************************

C语言循环结构与时间函数用法实例教程_C 语言

本文实例展示了C语言循环结构与时间函数用法,对于C语言的学习来说是非常不错的参考借鉴材料.分享给大家供大家参考之用.具体如下: 完整实例代码如下: /********************************************** ** <Beginning C 4th Edition> Notes codes ** Created by Goopand ** Compiler: gcc 4.7.0 *****************************************

C++中auto_ptr智能指针的用法详解_C 语言

智能指针(auto_ptr) 这个名字听起来很酷是不是?其实auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,但也有其局限.本文总结的8个问题足以涵盖auto_ptr的大部分内容. auto_ptr是什么? auto_ptr 是C++标准库提供的类模板,auto_ptr对象通过初始化指向由new创建的动态内存,它是这块内存的拥有者,一块内存不能同时被分给两个拥有者.当auto_ptr对象生命周期结束时,其析构函数会将auto_ptr对象拥有

C++中基类和派生类之间的转换实例教程_C 语言

本文实例讲解了C++中基类和派生类之间的转换.对于深入理解C++面向对象程序设计有一定的帮助作用.此处需要注意:本文实例讲解内容的前提是派生类继承基类的方式是公有继承,关键字public.具体分析如下: 以下程序为讲解示例: #include<iostream> using namespace std; class A { public: A(int m1, int n1):m(m1), n(n1){} void display(); private: int m; int n; }; voi

C++中函数使用的基本知识学习教程_C 语言

函数是执行某种操作的代码块.函数可以选择性地定义使调用方可以将实参传递到函数中的输入形参.函数可以选择性地返回值作为输出.函数可用于在单个可重用块中封装常用操作(理想情况是使用可清晰地描述函数行为的名称).以下函数从调用方接受两个整数并返回其总和:a 和 b 是 int 类型的参数. int sum(int a, int b) { return a + b; } 可以从程序中任意数量的位置调用函数.传递给函数的值是实参,其类型必须与函数定义中的形参类型兼容. int main() { int i

C++友元(Friend)用法实例简介_C 语言

相对于Java而言,友元是C++中特有的一种元素,很多教材上对其介绍的相对较少,因此初学的时候往往不能很快掌握,本文总结了友元的用法和一些注意的地方,供大家参考借鉴.希望能对初学C++的朋友起到一点帮助作用. 操作步骤: 1)在MyFriend类中,将Father类定义成友元 2)写一个Son类继承自Father类 3)在Father类和Son类的构造函数中分别创建MyFriend对象,并定义其内部的三个变量 4)在MyFriend类的构造函数中创建Father对象,并定义其内部的三个变量 结果

C++中变量的类型与作用域学习教程_C 语言

C++ 变量类型 变量其实只不过是程序可操作的存储区的名称.C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上. 变量的名称可以由字母.数字和下划线字符组成.它必须以字母或下划线开头.大写字母和小写字母是不同的,因为 C++ 是大小写敏感的. 基于前一章讲解的基本类型,有以下几种基本的变量类型,将在下面进行讲解: 类型 描述 bool 存储值 true 或 false. char 通常是一个八位字节(一个字节).这是一个整数类型

VC++中HTControl的CHTButton按钮控件类用法实例解析_C 语言

本文以实例形式讲解了VC++中HTControl控件类的CHTButton按钮控件类用法,相信对大家更好的理解VC++有一定的帮助.具体内容如下: 一般了解VC++的朋友都知道,VC++ 按钮控件CHTButton隶属HTControl控件组,直接由WIN32 API实现,你可以在SDK,MFC,wxWidget等环境下使用它.支持生成各种类型的按钮,比如:普通按钮,PNG透明按钮,复选框按钮,单选按钮等.使用时请注意,窗体必须动态创建,代码段如下: m_HTBtnClose.Create(75