我有一个类 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/

10-12 04:33