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

c++11之二: 类成员变量初始化

2014-08-05 11:59 148 查看
在C++11中,

1、允许非静态成员变量的初始化有多种形式:初始化列表; 使用等号=或花括号{}进行就地的初始化。

可以为同一成员变量既声明就地的列表初始化,又在初始化列表中进行初始化,只不过初始化列表总是看起来“后作用于”非静态成员。

也就是说,初始化列表的效果总是优先于就地初始化的。

#include <iostream>
2 using namespace std;
3 class CBase{
4     public:
5     CBase(){cout<<"mem default="<<mem<<endl;}
6     CBase(int i):mem(i){cout<<"mem init="<<mem<<endl;}
7     int mem{10};
8 };
9
10 int main(){
11     CBase objA;
12     CBase objB(5);
13 }

mem default=10
mem init=5

2、非常量的静态成员变量,与c++98保持一致。需要到头文件以外去定义它,这会保证编译时,类静态成员的定义最后只存在于一个目标文件中。

3、静态常量成员,除了const关键字外,还可以使用constexpr来对静态常量成员进行声明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: