c++中初始化列表的初始設定變數順序問題

來源:互聯網
上載者:User

標籤:public   iostream   順序   聲明   說明   str   har   get   name   

例題來看:請問下面程式列印出的結果是什嗎?

 1 #include <iostream> 2 #include <string> 3  4 using namespace std; 5  6 class base 7 { 8 private: 9    int m_i;10    int m_j;11 public:12    base(int i):m_j(i),m_i(m_j);13    base():m_j(0),m_i(m_j){}14    int get_i() {return m_i;}15    int get_j() {return m_j;}16 };17 int main(int argc,char* argv[])18 {19     base obj(98);20     cout<<obj.get_i()<<endl;21     cout<<obj.get_j()<<endl;22     return 0;23 }

     

 

 

        如果你回答“98,98”,說明你對c++根本不是精通,熟悉都談不上。因為這個類的成員變數的聲明順序為:先 m_i,再是 m_j,而初始化列表的初始設定變數順序是根據成員變數的聲明順序來執行的,也就是先給m_i賦值,再給m_j賦值;並不是列表中的順序。因此m_i會被賦予一個隨機值。此程式實際輸出為——一個隨機數和98。

c++中初始化列表的初始設定變數順序問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.