一个对象中含有动态申请的内存空间,如果用该对象初始化另一个对象(默认拷贝构造函数是一种浅拷贝,不会拷贝动态分配的内空间)两个对象共同使用一块内存区,当两个对象被销毁时,再次释放内存会出错。
#include
using namespace std;
class car
{
public:
car (int s,char *pn);
~car();
private:
int speed;
char *pname;
};
car::car(int s,char *pn)
{
speed=s;
pname=new char[20];
strcpy(pname,pn);
cout<<"init the char"<<endl;
}
car::~car()
{
cout<<"delete the char class"<<endl;\
delete pname;
}
void main()
{
car car1(60,"FirstCar");
car car2(car1);
}