gpt4 book ai didi

C++ 对象保留?

转载 作者:太空狗 更新时间:2023-10-29 19:59:18 24 4
gpt4 key购买 nike

我是一名 Objective-C 程序员,最近开始使用 C++,但我在代码组织方面无意中遇到了这个问题:

std::list<char *> stuff = std::list<char *>();
thing *object = new thing(stuff);

stuff 是我在我的类的生命周期中(也就是说,直到它被破坏)需要的对象,如何避免丢失它?

在 Objective-C 上,我可以简单地在构造函数上调用 -retain。在 C++ 上?

最佳答案

不要在不需要时使用指针,don't use owning raw pointers (除非你有一个非常的理由)。

使用自动存储时间:

std::list<char> stuff;
thing object{stuff};

thing 的构造函数需要std::list<char>作为它的论点:

#include <utility> // for std::move

class thing {
public:
explicit thing(std::list<char> stuff_) : stuff(std::move(stuff_)) {}

private:
std::list<char> stuff;
};

如果你这样做,thing 的析构函数将在 thing 时调用超出范围,隐式调用 stuff 的析构函数.许多good C++ books非常详细地解释这一点。

与 Objective-C 不同,C++ 使用 RAII 而不是引用计数。基本规则是:尽可能使用自动存储持续时间,避免原始拥有指针,并且不要使用 new除非你有充分的理由。

关于C++ 对象保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14026761/

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