C++類中引用成員和常量成員的初始化(初始化列表)


如果一個類是這樣定義的:

Class A
{
     public:
          A(int pram1, int pram2, int pram3);
     privite:
          int a;
          int &b;
          const int c; 
}

假如在構造函數中對三個私有變量進行賦值則通常會這樣寫:

A::A(int pram1, int pram2, int pram3)
{
     a=pram1;
     b=pram2;
     c=pram3;
}

但是,這樣是編譯不過的。因為常量和引用初始化必須賦值。所以上面的構造函數的寫法只是簡單的賦值,並不是初始化。

正確寫法應該是:

A::A(int pram1, int pram2, int pram3):b(pram2),c(pram3)
{
     a=pram1;
}

采用初始化列表實現了對常量和引用的初始化。采用括號賦值的方法,括號賦值只能用在變量的初始化而不能用在定義之后的賦值。

凡是有引用類型的成員變量或者常量類型的變量的類,不能有缺省構造函數。默認構造函數沒有對引用成員提供默認的初始化機制,也因此造成引用未初始化的編譯錯誤。並且必須使用初始化列表進行初始化const對象、引用對象。


免責聲明!

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



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