3、t)//创建对象b,调用A(constA&)Ab(a);Ac=b;调用拷贝构造函数的两种典型方法6默认拷贝构造函数对于类来说,拷贝构造函数是必须的;没有定义,则生成默认的拷贝构造函数内置在类中;默认拷贝构造函数是单参数的,而且参数是同属一类的对象;默认拷贝构造函数可以被重载.7拷贝构造函数Aa;Ab=a;//调用拷贝构造函数Ac(a);//调用拷贝构造函数重载拷贝构造函数拷贝构造函数的参数必须为引用参数8拷贝构造函数的执行用已有对象初始化创建对象。当对象作函数参数时,因为要用实参初始化形参,也要调用拷贝构造函数。对象引用调用——不会调用构造函数和析构函数。函数返回对象
4、返回一个临时对象,这样调用一次临时对象的析构函数赋值不可以9classBox{public:Box();Box(constBox&);voidset(int,int,int);doublevolumn();private:floatlength;floatwidth;floathighth;};调用拷贝构造函数的时机Box::Box(constBox&b){cout<<"Copyconstructor."<5、shoesBox;Boxb2(b1);}代码模拟10classBox{public:Box();Box(constBox&);voidset(int,int,int);doublevolumn();private:floatlength;floatwidth;floathighth;};调用拷贝构造函数的时机voidtest(Boxb){cout<<“testfuction:"<6、示的堆时,默认拷贝构造函数仅作指针值复制,需显式定义拷贝构造函数。拷贝构造函数12//一个有问题的程序#include#includeclassname{public:name(char*pn);~name();private:char*pname;intsize;//包含字符的数目};浅复制和深复制代码练习,程序探讨13浅复制和深复制name::name(char*pn){cout<<"Constructing"<7、y(pname,pn);size=strlen(pn);}name::~name(){cout<<"Destructing"<