一、引言 C++中类的成员变量有以下几种...C++中使用const关键字修饰的成员变量就是常成员变量,有两种定义方式: const int c; int const c; 需要注意的是: 1)任何函数都不可以对其值进行赋值和修改; 2)必
一、引言
C++中类的成员变量有以下几种特殊的类型:
1、常成员变量
2、静态成员变量
3、静态常成员变量(基本数据类型)
4、静态常成员变量(自定义数据类型)
二、常成员变量
C++中使用const关键字修饰的成员变量就是常成员变量,有两种定义方式:
const int c;
int const c;
需要注意的是:
1)任何函数都不可以对其值进行赋值和修改;
2)必须而且只能在构造函数的成员初始化列表中对其进行初始化;
3)假如类有多个构造函数,必须在所有的构造函数中都对其进行初始化。
三、静态成员变量
C++中使用static关键字修饰的成员变量就是静态成员变量,有两种定义方式:
static int c;
int static c;
需要注意的是:
1)在类外进行初始化,并且在初始化时不需要在加static进行修饰;
2)不可以放在xxx.h文件中进行初始化,必须放在xxx.cpp文件中,否则会造成重复定义;
3)静态变量在程序开始运行时就已经分配了空间以及初始化了,并不属于类的某一个实例对象;静态成员变量被所有的对象共享,包括该类的派生类对象;
4)静态变量可以被类中所有的函数调用并修改,如果是public类型,也可以通过类名对其进行访问和修改;
5)静态变量的类型可以是所属类的类型(不知道有什么用),而普通成员只能声明为所属类类型的指针或者引用;
四、静态常成员变量
使用staticconst类修饰的成员变量
对于不同的数据类型,其初始化形式有所不同:
1、自定义类型(string等内置类型以及使用class定义的类等)
必须放在类外初始化,不可以放在xxx.h文件中,可以不加static修饰
2、基本数据类型(intdouble float bool等)
可以在类内部进行初始化(唯一一个可以在类内进行初始化的)
五、例程
example.h文件
class Example{ public: Example(); private: int i; static int si; const int ci;	//常成员变量,在构造函数的初始化列表中初始化 static const double scd = 1.01; static const int sci; static const string scs;	//类类型的静态常量,必须在类外初始化 };example.cpp文件int Example::si = 10; const int Example::sci = 19; const string Example::scs = "zs"; Example::Example():i(1),ci(19){} //对常成员变量ci进行初始化