深層複製建構函式

嘰了咣啷biang發表於2012-07-07
#include <iostream>
using namespace std;
class A
{
public:
	A(){x=new int;*x=5;}   //建立一個物件的同時將成員指標指向的變數儲存到新空間中
	~A(){delete x;x=0}     //析構物件的同時刪除成員指標指向的記憶體空間,為了
	                       //穩妥起見將指標賦為空

	A(const A&a)           //const為了避免對a進行操作
	{
		cout<<"複製建構函式執行。。。\n"<<endl;
		x=new int;         //複製構造物件的同時將成員指標指向的變數儲存到新空間中
		*x=*(a.x)          //讀取舊物件的成員指標x指向的空間處的資料
			               //並賦給新物件的成員指標x所指向的記憶體區域
	}
private:
	int *x;
};
int main()
{
	return 0;
}
用已有的物件建立新的物件才會呼叫複製建構函式

相關文章