c 遠征之封裝篇(拷貝建構函式)

2021-07-29 12:01:59 字數 1758 閱讀 2886

拷貝建構函式

/****************************************/

示例安排:

1.定義乙個array類,資料成員為m_icount,成員函式包括資料封裝、建構函式、拷貝建構函式和析構函式,通過此示例體會淺拷貝原理。

2.增加資料成員m_parr,並增加m_parr位址檢視函式,同時改造建構函式、拷貝建構函式和析構函式,體會拷貝的原理和必要性。

/****************************************/

1.淺拷貝建構函式

/*array.h*/

class array

;

/*array.cpp*/

#include#include"array.h"

using namespace std;

/*建構函式*/

array::array()

/*析構函式*/

array::~array()

/*拷貝建構函式*/

array::array(const array &arr)

void array::setcount(int count)

int array::getcount()

/*demo.cpp*/

#include#include#include"array.h"

using namespace std;

int main(void)

;

/*array.cpp*/

#include#include"array.h"

using namespace std;

/*建構函式*/

array::array(int count)

cout << "array" << endl; //刷刷存在感

}/*析構函式*/

array::~array()

/*深拷貝建構函式*/

array::array(const array &arr)

cout << "array&" << endl; //刷刷存在感

結果分析:第乙個呼叫的是建構函式,第二個呼叫的是拷貝建構函式,然後輸出的是arr1中的值,接著輸出的是arr2中的值。

關於淺拷貝和深拷貝的總結:

1.當資料成員中含有指標時,淺拷貝會使兩個物件的成員指標指向相同的記憶體位址

2.不是所有的物件都需要深拷貝,應該根據情況合理使用

3.深拷貝不是簡單的值拷貝,而是將指標成員指向的記憶體資料也進行拷貝

C 遠征之封裝篇(下)

2 2 物件陣列實踐 檔案 class coordinate 檔案 include include coordinate.h using namespace std coordinate coordinate for int j 0 j 3 j p delete p p null system pa...

c (3)遠征之封裝篇(下)

1 例項化物件陣列 class coordinate public int m ix int m iy int mian void coordinate coord 3 coord 1 m ix 10 coordinate p new coordinate 3 p 0 m iy 20 p m ix ...

C 篇之建構函式 析構函式和拷貝建構函式

建構函式 建構函式負責建立物件和初始化物件,在用預設的建構函式建立物件時,如果建立的是全域性物件或 靜態物件,則物件的值全為0,否則物件的值是隨機的,和c語言中定義的變數一樣 類也是一 個型別 建立物件的同時會自動呼叫建構函式。建構函式的規則 建構函式和類的名字一樣並且沒有返回值,可以有引數也可以沒...