C++基础学习笔记----第九课(构造函数)(二)
;
int* ap;
public:
A(int length);
A(const A& aj);
int getlength();
void setdata(int index,int data);
int getdata (int index);
void destroy();
};
#endif
通过上面的a.cpp可以看出,这里没有使用默认的
C++拷贝构造函数,因为默认的
C++拷贝构造函数只是进行简单的值复制,也就是将我们在
构造函数中的数组的大小和数组的指针进行复制,
经过拷贝构造函数的数组和原来的数组指向同一块内存空间,而我们在主函数中对同一块内存空间进行了两次delete,所以程序会崩溃。
解决办法是不使C++编译器默认的拷贝构造函数,在自己定义的拷贝构造函数中重新为第二个数组分配内存空间。