在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...