c++11之二: 類成員變量初始化


在C++11中,

1、允許非靜態成員變量的初始化有多種形式:初始化列表; 使用等號=或花括號{}進行就地的初始化。

可以為同一成員變量既聲明就地的列表初始化,又在初始化列表中進行初始化,只不過初始化列表總是看起來“后作用於”非靜態成員。

也就是說,初始化列表的效果總是優先於就地初始化的。

#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

2、非常量的靜態成員變量,與c++98保持一致。需要到頭文件以外去定義它,這會保證編譯時,類靜態成員的定義最后只存在於一個目標文件中。

3、靜態常量成員,除了const關鍵字外,還可以使用constexpr來對靜態常量成員進行聲明。

 


免責聲明!

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



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