我有一个类 MyClassA
。在它的构造函数中,我将指针传递给类 B 的实例。我有一些与此相关的非常基本的问题。
(1) 首先,下面的代码正确吗? (制作浅拷贝的代码和 methodA()
中的代码)
MyClassA::MyClassA(B *b){
this.b = b;
}
void MyClassA::methodA(){
int i;
i = b.getFooValue();
// Should I rather be using the arrow operator here??
// i = b->getFooValue()
}
(2) 我猜我不需要担心在析构函数
MyClassA.b
中删除 ~MyClassA()
的内存,因为它没有分配。我对吗?谢谢
更新: 谢谢大家的回答! MyclassA 只对访问类 B 的方法感兴趣。它不获取 B 的所有权。
最佳答案
1)
this.b = b;
这里你传递一个指向 B 实例的指针。 正如 Mac 所指出的,这应该是:
这-> b = b;
b.getFooValue();
这应该是 b->getFooValue(),因为 MyClassA::b 是指向 B 的指针。
2)这取决于您如何定义 MyClassA::b 是什么。如果您(在代码注释中)指定 MyClassA 接管在 MyClassA 的构造函数中传递的 B 实例的所有权,那么您需要在 MyClassA 的析构函数中删除 b 。如果您指定它只保留对 b 的引用,而不接管所有权,那么您不必这样做。
附注。遗憾的是,在您的示例中 there is no way to make ownership explicit 不是在代码文档中。
关于C++:制作对象的浅拷贝 a) 语法 b) 我需要删除它吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2091833/