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

Copy constructor usage with pointer

本文关键字:构造函数 用法 复制 指针      更新时间:2023-10-16

我有一个关于复制构造函数用法的问题。我知道还有许多其他已回答的问题和种类繁多的教程,但我无法完全解决我的问题。

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

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

现在在另一个类B中,我有一个私有属性:

A myA;

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

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

我必须在B的析构函数中调用delete myA吗?

您的代码:

A(*anAPointer)

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

myA不是指针,所以你不必在B的析构函数中调用delete

请注意,如果您在A中实现复制构造函数,您应该考虑 3/5/0 规则,并且可能复制和交换惯用法。