语法格式为:
拷贝构造函数原型的一般形式:类名(const 类名&形参对象名){};
构造函数的形参是本类对象的引用而不是本类的对象是为了防止引起拷贝构造函数无休止地递归调用。
一、缺省拷贝构造函数。
class A{}
A a(3,2);
A b = a ;//调用拷贝构造函数
b = a//非初始化操作,为赋值操作。
二 自定义拷贝构造函数
如果构造函数中存在动态内存分配,则必须定义拷贝构造函数。否则,会出现“指针悬挂问题”。
class A{
private:
int *p;
public:
A(){p = new int(3);}
}
这种情况下,必须最定义拷贝构造函数。否则会造成两个对象的成员指向同一地址。