拷貝建構函式
/****************************************/
示例安排:
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語言中定義的變數一樣 類也是一 個型別 建立物件的同時會自動呼叫建構函式。建構函式的規則 建構函式和類的名字一樣並且沒有返回值,可以有引數也可以沒...