// 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. 通常对于基础类,都最好需要实现构造函数、拷贝构造函数、析构函数
以及(注意)重载赋值操作符。
合成拷贝构造函数与拷贝构造函数初始化
最新推荐文章于 2024-06-07 21:06:43 发布