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};//用復制拷貝函數初始化 };