在C++11中,允许非静态成员变量的初始化有多种形式:初始化列表; 使用等号=或花括号{}进行就地的初始化。
可以为同一成员变量既声明就地的列表初始化,又在初始化列表中进行初始化,只不过初始化列表总是看起来“后作用于”非静态成员。
也就是说,初始化列表的效果总是优先于就地初始化的。
#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
c++11之二: 非静态成员变量初始化
时间: 2024-10-29 10:23:54