您的位置:首页 > 编程语言 > C语言/C++

C++类特殊数据成员总结(常数据成员、静态数据成员、静态常数据成员)

2016-02-15 11:32 459 查看
一、引言

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进行初始化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++