拷贝构造函数的形参为何应该是const Type& src
class A { private: int value; public: A(int value){ this->value = value; } A(A src){ this->value = src.value; } }; int main(int argc, char* argv[]) { A a = 0; A b = a; return 0; }
如果像上面的程序那样,拷贝构造函数是传值,那么在执行该函数的时候要copy一份对象,就要调用copy构造函数,造成了死循环调用
为了避免,C++不允许拷贝构造函数所传值。
另外拷贝构造函数对于被拷贝的对象来说,是不会修改它的,为了避免修改,所以采用了const 引用
因此拷贝构造函数的形参形式一般是
const Type& src