我正在尝试了解Deep Copy并编写此程序。
#include <iostream>
#include <string.h>
using namespace std;
char a[10];
class String
{
public:
char *ptr;
String()
{
ptr = a;
}
void setString(const char *str)
{
strcpy(ptr,str);
}
void operator=(String k){
ptr = new char[10];
strcpy(ptr, k.ptr);
}
char* getString()
{
return ptr;
}
};
class student
{
public:
String name;
student(){ }
student (const student &O){
name=O.name;
}
};
int main(){
student obj;
obj.name.setString("ABC");
student obj1=obj;
obj1.name.setString("NEW");
cout << obj.name.getString() << endl;
cout << obj1.name.getString() << endl;
}
工作正常。但是我试图调用Destructor来释放内存,当我写Destructor
时,程序运行不正常。
~String(){
delete ptr;
}
我知道这可能是由于ptr = a;
我已经使用其他简短示例进行了测试,而ptr = a在调用Destructor
时导致了问题。
注意:本程序只是为了理解Deep副本。
答案 0 :(得分:2)
所以你真正想要考虑的一些事情是: