在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来对静态常量成员进行声明。

 

相关文章:

  • 2021-09-09
  • 2022-12-23
  • 2021-12-21
  • 2022-01-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-30
  • 2022-12-23
  • 2021-09-29
  • 2021-11-24
  • 2021-04-03
  • 2022-12-23
  • 2021-09-12
相关资源
相似解决方案