<分区>
在设计动态分配内存的类时,我遇到了以下有关内存分配的问题。我希望你们中的一些人能够为我指明正确的方向,让我知道我应该如何以更好的方式设计我的类(class)。我的类动态分配内存,因此也在其析构函数中将其删除。
为了说明问题,请考虑以下愚蠢的类声明:
class testClass{
int* data;
public:
testClass(){
data = new int;
*data = 5;
}
~testClass(){
delete data;
}
};
到目前为止一切顺利。现在假设我在 main 中创建了这些对象之一
int main(){
testClass myObject;
return 0;
}
当然仍然没有问题。但是,假设我现在编写一个函数,将 testClass 对象作为输入并从 main 中调用它。
void doNoting(testClass copyOfMyObject){
//do nothing
}
int main(){
testClass myObject;
doNothing(myObject);
return 0;
}
这一次,该函数创建了一个局部变量 copyOfMyObject,它只是 myObject 的一个拷贝。然后当到达该函数的末尾时,该本地对象自动调用其析构函数,该析构函数删除其数据指针指向的内存。但是,由于这是 myObject 的数据指针所指向的同一内存,myObject 在此过程中无意中删除了它的内存。我的问题是:设计类(class)的更好方法是什么?