C++中类成员变量的初始化问题

ⅰ亾dé卋堺 提交于 2020-02-17 16:37:38

C++11之后允许对非静态成员变量进行初始化(in-class initialization),不过对于非fundamental(非基本数据)类型需要采用的是initializer_list来实现的

 

所以如下代码是错误的:

class A{
public:
int x=1;

string s="qweqetfqw";
vector<int>p(1,0);//这句错了,vector不是基本数据类型,必须用大括号初始化
};

改成下面这样就正确了:

class A{
public:
     int x=1;
     string s="qweqetfqw";
     vector<int> p{0};//用大括号直接初始化
};

或者:

class A{
public:
     int x=1;
     string s="qweqetfqw";
     vector<int> p={0};//用复制拷贝函数初始化
};

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!