使用指针

时间:2017-07-04 08:40:09

标签: c++ copy-constructor

我对复制构造函数的使用有疑问。我知道还有很多其他问题和各种各样的教程,但我无法彻底解决我的问题。

我有一个实现复制构造函数的类A

A::A(const A& a) { ....... }

现在在另一个班级B中,我有一个私人属性:

A myA;

在执行期间,使用指向B对象的指针调用A方法,然后调用它anAPointer。我现在想将anAPointer指向的元素复制到B::myA。如果指针后面的元素稍后更改,我不希望这些更改影响myA属性。

我还使用了this->myA = A(*anAPointer);。这会产生我想要的效果吗?

我是否必须在delete myA的析构函数中调用B

1 个答案:

答案 0 :(得分:2)

您的代码:

A(*anAPointer)

正在调用A的复制构造函数,因此this->myA将是AanAPointer指向的值无关的实例。对第一个的更改不会传播到另一个,反之亦然(除非您的类A处理共享资源,但在您的问题中没有指出。)

myA不是指针,因此您无需在delete的析构函数中调用B

请注意,如果您要在A中实施复制构造函数,则应考虑rule of 3/5/0copy and swap idiom