C 複製建構函式的使用

2021-10-04 21:30:19 字數 1300 閱讀 9944

在c++中物件之間相互複製總是起不到預期的效果,今天呢給大家分享一下區別於淺複製的深複製,可以達到重新開闢記憶體單元,將被複製的內容完整的拷貝到指定物件的成員變數中去。

1.當類的物件被初始化為同一類的另一物件時

2.當物件被當做乙個引數傳遞給乙個函式時

3.當函式返回乙個物件時

使用例項

首先其形式同一般建構函式

string

(const string &

)//複製建構函式宣告

/*

*main主函式

*/#include

#include

"mystring.h"

#include

using

namespace std;

void

teststr()

;int

main()

void

teststr()

/*

*mystring標頭檔案

*/#include

#include

using

namespace std;

class

string

/*

*mystring.cpp檔案

*/#include

#include

"mystring.h"

#include

using

namespace std;

string::

string()

:m_length(0

)string::

string

(char

* str)

ostream &

operator

<<

(ostream & out , string & str)

string string::

operator=(

const string & str)

~string::

string()

最終可以看到,str1,str2,str3輸出結果相同,指標位址不同,即每乙個都重新分配了空間,而不是出於同乙個指標所指向的空間。達到了複製物件的目的,而不會更改其中乙個引起其他物件的更改!

這次內容到這裡就結束了,您的三連就是對我最大的支援!

C 複製建構函式

c 複製建構函式,一般在一下幾種情況中出現 1 物件以值傳遞的方式傳入函式時 2 物件以值傳遞的的方式從函式返回 3 乙個物件通過另乙個物件初始化 4 陣列 根據陣列中的初始化列表初始化陣列的時候。5 容器 初始化順序容器中的元素 有3種情況必須使用複製建構函式 a 如果有資料成員是指標 b 要在建...

C 複製建構函式

1.概念 只有單個形參,而且該形參是對本類型別物件的引用 常用const修飾 2.首先看乙個小例子 h中 class test private int a float b cpp中 int main test test1 5,5.5 test test2 1,1.1 coutcouttest3使用了...

C 複製建構函式

誰知道 include include using namespace std class person 如果兩種方式同時存在,會呼叫沒有const的版本 2.推薦,存在唯一的person person person person 3.不推薦,這個依然是複製建構函式,詭異。與第二種方法存在二義性 p...