转移构造函数 & 转移赋值操作符重载函数
转移构造函数 & 转移赋值操作符重载函数
拷贝构造 在创建一个对象时用另一个同类型的 对象对其初始化时,将会调用拷贝构 造函数
拷贝构造 ◼ 在创建一个对象时用另一个同类型的 对象对其初始化时,将会调用拷贝构 造函数
class A char *p; public: A(char *str) p new char[strlen(str)+1]; strcpy(p,str); } A(const A&x)/拷贝构造函数 {p=new char[strlen(x.p)+l];/申请空间 strcpy(p,x.p);/内容复制 ~A() {delete[]p;/归还空间 P=NULL; void g(){.….} bi
class A { char *p; public: A(char *str) { p = new char[strlen(str)+1]; strcpy(p,str); } A(const A& x) //拷贝构造函数 { p = new char[strlen(x.p)+1]; //申请空间 strcpy(p,x.p); //内容复制 } ~A() { delete[]p; //归还空间 p = NULL; } void g() { ...... } };
void f1(A x){......} Af2() return..;//调用拷贝构造函数创建临时对象(返回值) Aa("abcd"); Ab(a);/调用拷贝构造函数创建对象b f1(a);/调用拷贝构造函创建对象x f2().g();/调用返回的临时对象的成员函数g
void f1(A x) { ...... } A f2() { ...... return ...; //调用拷贝构造函数创建临时对象(返回值) } ...... A a("abcd"); A b(a); //调用拷贝构造函数创建对象b f1(a); //调用拷贝构造函创建对象x f2().g(); //调用返回的临时对象的成员函数g
拷贝构造的问题 当用一个临时或即将消亡的对象去初始化 另一个同类的对象时,目前的拷贝构造函 数的实现效率有时是不高的
拷贝构造的问题 ◼ 当用一个临时或即将消亡的对象去初始化 另一个同类的对象时,目前的拷贝构造函 数的实现效率有时是不高的