代碼中的輸出語句輸出0嗎,為什麼

已邀請:

劉殺雞

贊同來自:


struct CLS


{


int m_i;


CLS( int i ) : m_i(i) {}


CLS()


{


CLS(0);


}


};


CLS obj;


cout << obj.m_i << endl;


--- 不是, 我個人是這樣理解的:因為在CLS()中調用瞭CLS(0),所以在CLS()中又構造出一個CLS匿名對象,並用0來初始化該成員變量,而不是ojb對象.在CLS()調用結束時,這個對象就被析構瞭,而沒有按我們原意圖把0賦值給obj對象.


有關面向對象程序設計的書中都提到瞭,構造函數不能顯示的調用.隻能在初始化對象時使用.所以程序應該這樣子寫:


CLS obj(0);


cout << obj.m_i << endl;

要回復問題請先登錄註冊