首先我给出一个类
class A
{
public:
char *p;
int nlen;
A();
A(const char *p1)
{
nlen = strlen(p1);
p = new char[nlen+1];
strcpy(p,p1);
}
};
void main()
{
A a("Hello world");
A b = a;
}
如果没有构造拷贝函数的话,
这样明显会出现2个问题,
1.a.p和b.p指向同一个内存区域
//2.a.p资源没有释放
3.a和b调用了默认析构函数的话,同一个资源被释放了2次.
这就是没有构造拷贝函数的缺陷
在class A中加入
/*-----------------------------add method ------------*/
A(const A & a1)
{
nlen = strlen(a1.p);
p = new char[nlen+1];
strcpy(p,p1);
}
/*------------------------------end add ---------------*/
这样就加入了构造拷贝函数
明显上面的问题可以解决,
我们可以写更美观一点的代码
void main()
{
A a("Hello World");
A b(a);
cout <<"debug breakpoint is setted here"<<endl;
}