gpt4 book ai didi

c++ - 使用指针复制构造函数用法

转载 作者:搜寻专家 更新时间:2023-10-31 02:10:40 24 4
gpt4 key购买 nike

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

我有一个 A 类,它实现了一个复制构造函数:

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

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

A myA;

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

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

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

最佳答案

您的代码:

A(*anAPointer)

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

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

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

关于c++ - 使用指针复制构造函数用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44901076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com