對c 拷貝建構函式的一點理解

2021-06-26 00:13:52 字數 951 閱讀 5453

1.說明什麼是拷貝建構函式

對於普通的變數來說,拷貝是非常簡單的,但是對於類來說有很多成員變數,該怎麼拷貝呢?

int a = 10;

int b = a;//這裡複製是很簡單的

class cpp;

cpp a;

cpp a =b;//這裡如何複製呢

下面乙個列子:

#include #include using namespace std;

class cppex

void show()

~rect()

static int getcount()

};int rect::count = 0;

int main()

rect(rect &r)

~rect()

static int getcount()

};int rect::count = 0;

int main()

~rect()

};int main()

這個程式編譯的時候是沒有問題,問題出現在執行時。

原因是當rect1拷貝給rect2時,rect2的 p成員指標指的內

存和rect1物件的p成員指標指的記憶體是一樣的。當執行完之後

析構函式要析構rect1和2 所以肯定是錯誤的。

解決的辦法是深度拷貝。

三,深入拷貝

對成員不僅是簡單拷貝,還要分配記憶體等操作。

#includeusing namespace std;

class rect

rect(rect &r)

~rect()

};int main()

防止預設拷貝發生的方法,在private裡申明乙個拷貝建構函式

c 建構函式的一點見解

讀書讀到 建構函式這一部分,想到了些有趣的東西,寫下來以給大家分享 建構函式是乙個類初始化時呼叫的無返回值的特殊同名方法,當乙個類從另乙個類繼承 派生類的初始化過程其實就是向上不斷呼叫基類的建構函式這也是 net類庫的乙個重要特性,通過初始化乙個派生類 來完成一整個類庫的初始化,書上提到派生類預設的...

c 構造器的一點理解(2)

下邊對值型別的構造器進行一下說明 先說一下我對值型別構造器的初步印象。1 值型別一般情況先不需要有建構函式,clr保證其每個欄位都為0或者null,負責每個欄位的初始化。2 值型別可以有建構函式,但是必須是有參構造器,而且必須是被顯式的呼叫,否者不能被呼叫。3 如果值型別沒有建構函式,那麼clr保證...

對遞迴函式的一點小理解

對於遞迴函式,大家都很熟悉了,對於解析一些複雜資料結構方面,能夠使 非常簡潔,明了。從我的理解來說,遞迴函式一般效率比較低,而且自身特點導致的限制也不少 1.效率低 乙個非常簡單的例子數數吧,從1數到1m。對於迴圈實現的 遞迴實現 對於迴圈實現,函式相當於 對於遞迴實現,相當於 對於第一種實現,不需...