建構函式初始化問題

來源:互聯網
上載者:User

標籤:

§對const類型的資料成員進行初始化時不能直接賦值,如下面的賦值操作是錯誤的。

 1 class  C  { 2     public: 3         C() { 4             x = 0;      //OK,x  not const 5             c = 0;      //ERROR,c  is const 6         } 7  8     private: 9         int x;            //nonconst data member10         const int c;    // const data  member11 };

  因此,在C++中對const類型的資料成員進行初始化時必須為建構函式添加一個初始化列表,如下:

  

1 class  C{2     public:3         C () :c(0) {x = -1}4         5     private:6         int x;7         const int c;      //const data  member8 };

  再次總結:(規則)

  (1)建構函式的初始化段由一個冒號:開始,緊跟在冒號之後的是需要進行初始化的資料成員,然後是由一對小括弧括起來的初始值。

  (2)初始化列表僅在建構函式中有效,不能用於其他函數。

  (3)建構函式的初始化列表可以初始化任何資料成員(const 和 非const),但const類型的資料成員只能在初始化列表裡初始化,而不能用其他方法進行初始化。

1 class  C {2     public:3         C() : c(0), x(-1){}            //empty body4     5     private:6         int x;7         const int c;                      //const data member8 };

 

建構函式初始化問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.