C++学习笔记(五)
复制构造函数
简介
- 只有一个参数,那个参数是对同类的对象的引用(不能是对象)
- 格式: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的复制构造函数会被调用
注意:对象间的赋值并不导致复制构造函数的调用
例如: