2014-10-28 58 views
1

我有一個複雜類主要是一些這樣的:初始化,拷貝構造函數和賦值

int main() 
{ 
complex c1; 
complex c2=c1; 
complex c3(c1); 
complex c4; 
c4=c1; 
} 

我需要什麼構造的複雜類的順序或所有這些語句的工作? 而且,將超載的轉讓或拷貝構造函數在下面的使用:

complex c2=c1; 
complex c3(c1); 

回答

3
complex c1; 

默認的C-TOR。

complex c2=c1; 

copy c-tor。

complex c3(c1); 

copy c-tor。

complex c4; 

默認c-tor。

c4=c1; 

賦值運算符。

如果您沒有定義其他構造函數(或者您可以定義不帶參數的構造函數),則默認構造函數由編譯器定義。

複製構造函數和賦值運算符是由編譯器定義的,如果你沒有定義的話。

+0

賦值運算符應該可以訪問c2還是僅適用於「complex c5 = complex()」? – 2014-10-28 09:26:20

+0

@只適用於c4。你用c5的例子是複製構造函數。 – ForEveR 2014-10-28 09:28:38

1
當從現有對象創建新對象

拷貝構造函數被調用,作爲副本現有的對象。當已經初始化的對象被賦予來自另一個現有對象的新值時,調用賦值運算符被調用。

c4 = c1; // calls assignment operator, same as "c4.operator=(c1);" 
complex c2 = c1; // calls copy constructor, same as "complex c2(c1);" 
相關問題