
正文
C++中类成员变量的初始化问题
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C++11之后允许对非静态成员变量进行初始化(in-class initialization),不过对于 非fundamental(非基本数据) 类型需要采用的是initializer_list来实现的
所以如下代码是错误的:
class A{
public:
int x=;
string s="qweqetfqw";
vector<int>p(,);//这句错了,vector不是基本数据类型,必须用大括号初始化
};
改成下面这样就正确了:
class A{
public:
int x=;
string s="qweqetfqw";
vector<int> p{};//用大括号直接初始化
};
或者:
class A{
public:
int x=;
string s="qweqetfqw";
vector<int> p={};//用复制拷贝函数初始化
};







