gpt4 book ai didi

c++ - 正确实现指针变量的集合函数

转载 作者:太空狗 更新时间:2023-10-29 23:01:03 26 4
gpt4 key购买 nike

为存储在指针中的类变量实现集合函数的良好做法是什么(由于多态性的需要)。

我是通过引用传递指向 set 函数还是对象的指针?另外,确保不存在内存泄漏的教科书方法是什么?(不幸的是,我不能使用智能指针。)

在我看来,我有两个选择:

class A {
B* b;
setB(B& newB) {
delete b;
b = &newB;
}

//vs:

setB(B* newB) {
delete b;
b = newB;
}
};

最佳答案

从 C++11 开始,我相信正确的方法是使用 std::unique_ptr<B> :

#include <memory>

class A {
std::unique_ptr<B> b;
void setB(std::unique_ptr<B>&& newB) {
b = std::move(newB);
}
};

调用它,做:

std::unique_ptr<B> b(new B(/* ... */));
obj_A.setB(std::move(b));

std::unique_ptr<B>&& 类型的参数将向您的函数的用户确保您将指针的所有权交给您自己。

编辑:

正如 univise 所指出的,OP 不想使用智能指针。我无法从问题中推断出为什么会这样,但如果它与资源使用有关,请知道使用 std::unique_ptr这样的开销为零,无论是编译代码大小还是指针对象大小。

关于c++ - 正确实现指针变量的集合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951991/

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