gpt4 book ai didi

c++ - 如果我将一个成员存储为一个对象,我会在构造过程中产生一个对象拷贝吗?

转载 作者:太空宇宙 更新时间:2023-11-04 15:28:43 25 4
gpt4 key购买 nike

如果 Door 的构造函数如下所示:

Door::Door(Doorknob doorknob) : m_doorknob(doorknob) { }

然后你将像这样实例化一个Door:

Doorknob doorknob;
Door door(doorknob); // Does an object copy of doorknob occur here?

似乎如果将 Doorknob 存储为指针,则可以显式避免复制:

Door::Door(Doorknob * doorknob_ptr) : m_doorknob_ptr(doorknob_ptr) { }

像这样实例化 Door:

Door door(new Doorknob);

但现在你必须确保在 Door 的析构函数中 delete doorknob,这看起来很难看。

首选方法是什么?

最佳答案

更好的方法是通过 const 引用:

Door::Door(const Doorknob& doorknob) : m_doorknob(doorknob) { }

否则 Doorknob 的拷贝将被传递给构造函数并用作 m_doorknob 构造函数的参数。

关于c++ - 如果我将一个成员存储为一个对象,我会在构造过程中产生一个对象拷贝吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1375854/

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