定义
拷贝构造函数(copy constructor),又称复制构造函数,是在基于同一个类的其他对象进行构造的时候(赋值初始化、参数传递、返回值)被编译器调用的一种特殊构造函数。假设有一个类类型为T,拷贝构造函数的第一个形参必须是该类类型的引用,(即T&)也可以用cv限定符来修饰(const T&、volatile T&或const volatile T&),也可以有其他形参,但其他形参必须都有默认值。拷贝构造函数的声明语法如下:
T(const T&);
T(const T&) = default; //C++11
T(const T&) = delete; //C++11
前面提到过,有三种情况会调用拷贝构造函数:赋值初始化、参数传递和作为函数返回值时。对于最后一种情况,若类存在移动构造函数,则可能不会调用拷贝构造函数。
有意思的是,对于类中的私有成员,不能在外部通过类对象直接调用,而在拷贝构造函数中却可以。
#include <iostream>
class A
{
public:
A() : mem(0) {}
A(const A& a) : mem(a.mem) { std::cout << "copy constructor of class A has bee