假设我有Class1和Class2,我想要Class1的浅拷贝构造函数。 Class1有一个成员变量,它是一个指向Class2实例的指针。此外,我必须能够改变Class2 ptr指向。
头文件中的:
class Class1
{
Class2* ptr;
...
}
源文件中的:
Class1::Class1()
{
ptr = new Class2();
}
......
Class2* Class1::Exchange(Class2* newClass2)
{
Class2* temp;
ptr = newClass2;
return temp;
}
......
现在说
Class1 original;
Class1 shallowCopy(original);
Class2* newClass2 = new Class2();
Class2* oldClass2;
oldClass2 = orignal.Exchange(newClass2);
delete oldClass2;
现在我想要的是关联original.ptr和shallowCopy.ptr,当我实现浅拷贝构造函数时,如何确保这两个指针总是指向同一个Class2?我的意思是在上面的类中,oldClass2被删除,所以shallowCopy的ptr指向什么都没有。如果我不删除oldClass2,原始和shallowCopy的ptrs指向不同的Class2实例。
答案 0 :(得分:3)
您可能希望使用引用计数来共享指针,特别是Boost中的shared_ptr类。