复制构造函数
简介
- 只有一个参数,那个参数是对同类的对象的引用(不能是对象)
- 格式:X::X(const x&)或X::X(x&)
- 如果自己没有定义,则编译器会自动生成一个,完成复制功能
如果自己定义了,则不再自动生成
起作用的三种情况
用一个对象去初始化另一个同类的对象时
这两句的作用相同
- 如果某个函数有个参数是类A的对象,那么该函数被调用时,类A的复制构造函数将被调用
class A {public: A(){}; A(A&a) { cout<<"copy"<<endl; } //这是复制构造函数 }; void Func(A a1){} int main() { A a2; Func(a2); return 0; } 运行结果:copy
所以,如果复制函数不是用来复制对象,就会出现形参未必等于实参的情况。
- 如果函数的返回值是类A的对象,则返回时,A的复制构造函数会被调用
注意:对象间的赋值并不导致复制构造函数的调用
例如:
来源:https://www.cnblogs.com/CCchaos/p/12250150.html