基本概念
- 只有一个参数,是对同类对象的引用
形如 X::X( &X ) 或 X::X(const X &),后面的常用
Complex c1; // construtor
Complex c2(c1); // copy constructor
-
起作用的三种情况
用一个对象去初始化同类的另一个对象
Complex c2(c1);
Complex c2 = c1; // 初始化语句,非赋值语句
函数形参的传入
- 这样形参就不一定是实参的一个拷贝了
class A
{
public:
A(A & a) { cout << "copy constructor called" << endl;}
};
- 这样形参就不一定是实参的一个拷贝了
函数返回值是一个对象,即使没有赋值操作
BUT! 赋值操作不会调用拷贝构造函数!
Complex c1 = c2; // 初始化语句,调用
Complex c1;
c1 = c2; // 赋值语句,不调用
常量引用参数
- 函数中的形参使用引用,不会造成复制构造函数的调用,减少开销