写在博客里,以免找不到
以下三种情况被调用:
a.用类的一个对象去初始化该类的另一个对象时:
A a(1,2);
A a1(a);
A a2 = a;
b.函数形参是类的对象,调用函数进行形参和实参结合时:
void f( A p){}
A a(1,2);
f(a);
c.函数返回值是类的对象:
A g()
{
A a(1,2);
return A;
}
int main()
{
A aa;
aa = g();
}
来看一道例题
若有类B,以下代码理论上调用复制构造函数的次数为()
class B{ ... };
B f( B b)
{
return b ;
}
int main()
{
B b;
B b1=f(b);
return 0;
}
答案是3次
第一次是调用函数f时
第二次是f返回b时
第三次是b1=f(b)这个赋值操作时