使用指针复制构造函数用法

Copy constructor usage with pointer

我对拷贝构造函数的用法有疑问。我知道还有许多其他已回答的问题和各种各样的教程,但我无法完全解决我的问题。

我有一个 class A 实现了一个复制构造函数:

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

现在在另一个classB,我有一个私有属性:

A myA;

在执行过程中,B 的方法被调用并带有指向 A 对象的指针,我们称它为 anAPointer。我现在想将 anAPointer 指向的元素复制到 B::myA 中。如果指针后面的元素后来发生变化,我不希望这些变化影响 myA 属性。

我还用过this->myA = A(*anAPointer);。这有我想要的效果吗?

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

您的代码:

A(*anAPointer)

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

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

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