// copyconstructor.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
class A
{
public:
A(){}
~A(){}
int v;
};
class B
{
public:
B(){}
//B(B &b) : a(b.a) {} // 合成拷貝構造函數對應的拷貝構造函數 I
//B(B &b)
//{
// a = b.a; // 合成拷貝構造函數對應的拷貝構造函數 II
//}
~B(){}
A a;
};
int _tmain(int argc, _TCHAR* argv[])
{
B b;
b.a.v = 1;
B b0 = b;// 調用合成拷貝構造函數
return 0;
}
// 注意:
// 1. 合成拷貝構造函數是預設的拷貝構造函數。
// 2. 合成拷貝構造函數就等同于對所有成員變量進行一次指派操作。
// 3. 是以如果成員的預設的指派操作不能滿足需求(如是一個連結清單或含有指針),
就必須要對成員類定義重載指派操作符,才能夠讓合成拷貝構造函數起作用。
// 4. 通常對于基礎類,都最好需要實作構造函數、拷貝構造函數、析構函數
以及(注意)重載指派操作符。