使用指针复制构造函数用法
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。
我对拷贝构造函数的用法有疑问。我知道还有许多其他已回答的问题和各种各样的教程,但我无法完全解决我的问题。
我有一个 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。