C++中類成員變量的初始化問題


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM