c++11之二: 类成员变量初始化
2014-08-05 11:59
148 查看
在C++11中,
1、允许非静态成员变量的初始化有多种形式:初始化列表; 使用等号=或花括号{}进行就地的初始化。
可以为同一成员变量既声明就地的列表初始化,又在初始化列表中进行初始化,只不过初始化列表总是看起来“后作用于”非静态成员。
也就是说,初始化列表的效果总是优先于就地初始化的。
mem default=10
mem init=5
2、非常量的静态成员变量,与c++98保持一致。需要到头文件以外去定义它,这会保证编译时,类静态成员的定义最后只存在于一个目标文件中。
3、静态常量成员,除了const关键字外,还可以使用constexpr来对静态常量成员进行声明。
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来对静态常量成员进行声明。
相关文章推荐
- c++成员变量初始化问题
- C++类中成员变量的初始化总结
- 使用初始化清单和直接在构造函数内初始化成员变量的区别
- C++类中成员变量的初始化
- CB XE7 C11 64位编译器 成员变量初始化
- 特殊数据类型成员变量的初始化
- 构造函数的两种初始化成员变量的方法 09.2.23
- static成员必须在类外初始化,常量和变量的区别
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
- C++成员变量初始化与构造函数
- c++11 中成员变量初始化的顺序
- 类中有指针成员变量的初始化
- 关于成员变量自动初始化和局部变量手动初始化
- C++成员变量初始化列表和变量初始化顺序
- 局部变量与成员变量的同名问题&显示初始化
- const 成员变量初始化规则
- 指针成员变量需要初始化为nullptr吗?
- C++11之初始化成员变量
- c++类中成员变量的初始化
- 类中成员变量的初始化顺序