gpt4 book ai didi

c++ - 我应该通过引用、值还是 ptr 来存储一个完全封装的成员?

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

所以我有一个标准的 C++ 设置,其中一个对象存储另一个对象。存储的对象是完全拥有的,它永远不会泄露到外面。该成员是非常量。

class Container
{
private:
Contained item;
}

据我所知,当我的容器被实例化时,默认构造函数将在 item 成员上调用,我不必在初始化列表中管理它。另外我是否正确理解当我的对象被销毁时 item 上的 dtor 将被自动调用?

当然,另一种选择是通过引用存储它

class Container
{

private:
Contained& item;

public:

Container() : Contained()
{

}
}

在这种情况下,我不知道是否应该在 dtor 中删除它。

另一种选择是通过 ptr 存储它

class Container
{
private:
Contained* item;
public:
Container()
{
item = new Contained();
}

~Container()
{
delete item;
}
}

知道我的 item 永远不会返回给调用者,永远不会渗入外部 API,也永远不会被重新分配,最好的方法是什么?正如我提到的,item 成员不是 const(这将是一个自动调整大小的数据结构)。

最佳答案

最简单的是存储对象本身。我想说,为此目的使用引用是令人困惑的。使用指针的一个优点是您可以避免在头文件中定义 Contained 类型 - 您可以改为转发声明 Contained,并将所有详细信息保存在 .cpp 文件中。

关于c++ - 我应该通过引用、值还是 ptr 来存储一个完全封装的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9531244/

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