MyClass(const MyClass&x){cout

求解一個簡單的C++程序問題

2011-09-15 09:28tan001228  分類:C/C++ | 瀏覽 218 次
當類中有多個構造函數時,建立對象時是不是都要調用如下面的程序
#include<iostream>
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass& operator=(const MyClass&x){cout<<3; return*this;}
~MyClass(){cout<<4;}
};
int main(){
MyClass obj1(1),obj2(2),obj3(obj1);
return 0:
}
其最後的輸出結果是什麼?MyClass(const MyClass&x){cout<<2;}這個構造函數什麼時候調用的?
2011-09-15 10:06 提問者採納
建立obj3的時候
因爲 obj1已經存在的對象
用obj1對象 做參數 調用的構造函數 就是 它了MyClass(const MyClass&x){cout<<2;}

輸出 112444

建立 obj1 時調用構造函數 MyClass(int i=0){cout<<1;} 輸出1
建立 obj2 時調用構造函數 MyClass(int i=0){cout<<1;} 輸出1
建立obj3 時調用構造函數MyClass(const MyClass&x){cout<<2;} 輸出2
程序結束 調用析構函數 
析構函數 調用規則是 先建立的對象 後析構 ,後建立的對象先析構
所以
先調用 obj3 的析構函數輸出4
然後 obj2 的析構函數輸出4
最後obj1 的析構函數輸出4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章