卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

為什么要復制構造函數(shù) 為什么定義了復制構造函數(shù)就必須定義默認構造函數(shù)?

為什么定義了復制構造函數(shù)就必須定義默認構造函數(shù)?此語句不正確。你正在仔細閱讀這本書。如果是這樣寫的,那就錯了。我認為是不同的對象構造方法。默認構造函數(shù)是無參數(shù)構造,復制構造函數(shù)使用自己類型的對象如果關

為什么定義了復制構造函數(shù)就必須定義默認構造函數(shù)?

此語句不正確。你正在仔細閱讀這本書。如果是這樣寫的,那就錯了。

我認為是不同的對象構造方法。默認構造函數(shù)是無參數(shù)構造,復制構造函數(shù)使用自己類型的對象

如果關系復制構造函數(shù)需要一個對象,則該對象可以與其他構造函數(shù)一起構造。當然,它可能是默認構造函數(shù)或其他構造函數(shù)

復制構造函數(shù)是構造函數(shù)的子集嗎?你說得對。復制構造函數(shù)是一個構造函數(shù)。如果您提供這個,系統(tǒng)將不會提供默認構造函數(shù)。

我認為這句話應該說,如果一個類定義了一個復制構造函數(shù),那么它應該(應該,不應該)定義另一個構造函數(shù)(不一定是默認的)。不定義它是可以的,但是在這種情況下,類不能構造對象,只是不能被實例化。這樣的課是沒有意義的,對吧。

為什么復制構造函數(shù)的形參必須是一個引用?

使用引用參數(shù)復制構造函數(shù)的一個重要原因是避免遞歸調用!從語言規(guī)范的角度來看,這只是一種規(guī)則。例如&B=a表示B是對a的引用。從邏輯角度看,參數(shù)的傳遞本身就是一個副本。如果不使用引用類型,則當復制構造函數(shù)傳遞參數(shù)時將調用復制構造函數(shù),從而導致遞歸調用。因此,它是通過引用類型傳遞的。

為什么復制構造函數(shù)的形參必須是一個引用?

復制構造函數(shù)實際上是一個函數(shù)。如果將參數(shù)定義為類型而不是類型引用,它將首先調用該類型的復制構造函數(shù)并重構一個新實例,就像下面的示例類MyClass一樣。這是一個簡單的類{}int fun(MyClass a)//這是一個函數(shù)。調用時,編譯器會自動調用MyClass類型的構造函數(shù),并重新實例化MyClass int fun(MyClass&;AMPA)//此函數(shù)不會調用MyClass類型的構造函數(shù),只需傳遞一個指針~現(xiàn)在回到您的問題,賦值構造函數(shù)也是一種構造函數(shù),你給它一個非引用、非指針的參數(shù),它會調用這種類型的構造函數(shù),這很好~一個函數(shù)不斷地調用自己,這樣它就不會出錯,就不會堆棧溢出了,是嗎?簡單來說,事情是這樣的:intfun(MyClass a){fun(a)}//你認為這個函數(shù)有一天會結束嗎?

為什么復制構造函數(shù)不添加explicit前綴?

關鍵字explicit可以阻止“單參數(shù)構造函數(shù)”用于自動類型轉換(隱式類型轉換)

class test{

private:

int data

public:

test(int data=0){}

test(const test&RHS){}]}

不帶顯式,測試s=4可以編譯并通過

但是對于顯式,測試(4)不是必需的

那么復制構造函數(shù)的定義是什么?也就是說,構造函數(shù)的參數(shù)屬于這種類型。只要此類型的對象用于初始化同一類型的其他對象,將調用復制構造函數(shù)。

例如:

test a=4//將不在此處調用復制構造函數(shù)

test B=a//將在此處調用復制構造函數(shù)

因此復制構造函數(shù)中不存在隱式類型轉換問題,所以顯式是不需要的

構造函數(shù)的作用是使類的成員變量有適當?shù)某跏贾?。調用構造函數(shù)時,編譯器會在創(chuàng)建類的對象時自動調用它。復制構造函數(shù)意味著類的對象在創(chuàng)建時可以在現(xiàn)有對象之間初始化。當類對象用作函數(shù)參數(shù)時,或者當類對象用作函數(shù)返回值時,作為復制機制,類型值需要自動復制。