C++ 类中const成员 static 成员 const static 成员定义及初始化

来源:互联网 发布:mac怎么全屏浏览图片 编辑:程序博客网 时间:2024/04/27 18:47

C++类中的

1)、const 成员,只能在构造函数初始化列表里定义,不能再类外定义,是属于类的一个对象的常量数据成员,不是属于整个类的

2)、static成员,需要在类外定义,不需要加static关键字,方式为:type classname::staticname = ...,是属于整个类的,不是某个类的对象

3)、static const, const static成员一样,是整个类共享的常量,属于整个类,可以在类外定义,不能再初始化列表中定义,但是有一种情况:

只要初始化式是常量表达式,整形const static数据成员就可以在类的定义体中进行初始化,

如   static  const int  a =  1;   static const char ch = '#', 

也可在类外定义,在类外定义时要加const 关键字,不加static关键字

即两种定义方式 1、类中定义,2、类外定义(加const)

#include <iostream>using namespace std;class Test{public:Test(int _ca) : ca(_ca) {}  const int ca;   //只能在构造函数里初始化,不能在类外定义static int sa;  //在类外定义,不需要加static关键字static const int sca = 3; //可在类外定义,可在类内定义,不能在初始化列表中定义    static const int scb;};int Test::sa = 2;           //不加static关键字const int Test::scb = 4;    //加const ,不加staticint main(){Test tt(1);cout << "tt.ca : " << tt.ca << endl;//static成员可以通过类名::进行访问(为public的情况下)cout << "Test::sa : " << Test::sa << " " << tt.sa << endl;cout << "Test::sca : " << Test::sca << " " << tt.sca << endl;cout << "Test::scb : " << Test::scb << " " << tt.scb << endl;system("pause");return 0;}

结果:


0 0
原创粉丝点击