初始化器

in in in

Time(int a,int b)

:x1(a),x2(b) //初始化x1 x2 調用的是(可能是複製,要看a的類型是否與x1相同)構造函式 這樣初始化在Time的對象構造完成之前

{

x1=a; //這樣的方式 Time的對象已經構造起來了

x2=b;

}

引用:“如int a(3);和int a=3;一樣都是將a初始化為3.我覺得int a(3);應該調用的int類的複製構造函式。”

可以這么理解 但實際上內部類型是沒有這些構造函式的。C++為了方便讓它們支持這樣的操作

如果x1,x2和a,b的類型一樣,是不是調用的複製構造函式。那不一樣的時候是如何調用的呢。

你說內部類型沒有複製構造函式。那他是怎么實現int a(3)的呢。

int和其他類型不能被看做和自定義類一樣的類嗎!還是他們比較特殊。

像自定義一樣 都調用(默認)複製構造函式

自定義類不顯示定義複製構造函式時,系統會自動生成一個默認的複製構造函式

int的類型你也可以這么理解

#include <iostream>

using namespace std;

class B

{

int n;

public:

B(int _n=0)

{

n=_n;

}

B(B& o)

{

cout<<"Call B的複製構造函式:對象"<<o.n<<endl;

}

};

class A

{

B obj1;

B obj2;

public:

A(): obj2(B(2)), obj1(B(1)) //列表與變數聲明的順序無關

{

}

A(A& o)

{

cout<<"Call A的複製構造函式"<<endl;

}

};

int main()

{

A obj;

A obj1(obj); //調用複製構造函式 與 int a(3)比較

A obj2 = obj; //調用複製構造函式 與 int a=3 比較

obj1 = obj2; //調用賦值函式 與 a=3 比較

return 0;

相關詞條

熱門詞條

聯絡我們