首先看段代码
class A
{
public:
A():data(0)
{
p = new int[2];
}
A(const A &a)
{
data = a.data;
p = new int[2];
for(int i = 0;i < 2;i++)
*(p+i) = *(a.p+i);
}
~A()
{
delete []p;
}
private:
int data;
int *p;
};
int main()
{
A a;
A b(a);//拷贝构造函数
A c = a;//拷贝构造函数
A d;
d = a;//赋值函数
return 0;
}