c 拷貝結構體 拷貝構造

2021-10-12 20:43:03 字數 1869 閱讀 2392

用從不同型別的物件來構造物件
complex(double real); //用實數來構造複數類

用相同型別的物件來構造物件
complex(complex const&that); //用另乙個複數來構造複數

注意:如果乙個類沒有定義拷貝建構函式,那麼編譯器會提供乙個預設拷貝建構函式,預設是public

定義乙個複數類complex

#pragma once

#includeusing namespace std;

class complex

;

實現複數類complex

#include "complex.h"

complex::complex()

complex::complex(double real)

complex::complex(complex const & that)

void complex::printf() const

使用這個類

#include"complex.h"

int main()

//列印結果

無參構造

0+0i

型別轉換構造

5+0i

拷貝構造

拷貝構造

5+0i

拷貝構造

防止型別隱式轉換
對記憶體位址的複製,讓目標指標和源指標指向同塊記憶體

通過其中乙個指標去釋放記憶體,其他指向改記憶體的指標會成為野指標

對拷貝物件的記憶體進行複製l拷貝結束之後,兩個物件存的值相同,記憶體位址不同

l兩個物件互不影響,互不干涉

如果類帶有指標變數,並有動態記憶體分配,則它必須自定義乙個拷貝建構函式。

定義乙個男朋友類和乙個遊戲結構體

#pragma once

#include#includeusing namespace std;

struct game //遊戲類

};class boyfriend

;

實現男朋友類

#include "boyfriend.h"

boyfriend::boyfriend(string name)

boyfriend::boyfriend(const boyfriend & that)

void boyfriend::introduce() const

boyfriend::~boyfriend()

cout << "析構" << endl;

}

使用男朋友類

#include"boyfriend.h"

int main()

//列印結果

我叫夢凡,遊戲賬號暱稱是馬化騰,遊戲賬號等級是201

拷貝構造

我叫夢凡,遊戲賬號暱稱是馬化騰,遊戲賬號等級是201

析構 析構

C 的淺拷貝和深拷貝(結構體)

關於淺拷貝和深拷貝這個問題遇上的次數不多,這次遇上整理一下,先說這樣乙個問題,關於淺拷貝的問題,先從最簡單的說起。假設存在乙個結構體 struct student int main struct student stu2 stu2 stu cout age is 18 name is liming ...

c 拷貝構造

當用乙個已初始化過了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫。也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 乙個物件以值傳遞的方式從函式返回 乙個物件需要通過另外乙個物件進行初始化。補充說...

C 拷貝構造

呼叫時機 使用乙個已經建立完的物件來初始化乙個新物件 class person person person const person p private string name intage int main person 構造 person 拷貝構造 person 析構 person 析構 值傳遞...