【发布时间】:2021-02-24 03:03:23
【问题描述】:
我想知道在面向对象编程中使用std::unique_ptr 的正确方法是什么。假设我有一个类,其中包含一个必须可以通过指针传递的成员对象
class B
{/*Some code here*/};
class A
{
public:
A();
B* getMember();
private:
std::unique_ptr<B> member
};
首先:成员应该是std::unique_ptr 还是std::shared_ptr 以避免内存泄漏?
其次,如果我想的话,我的 getter 的实现会是什么
- 允许修改成员?
- 不允许修改成员?
我最初是这样做的:
B* A::getMember()
{
return member.get();
}
但我正在考虑让成员成为 std::shared_ptr 并调整 getter:
class A
{
public:
A();
std::shared_ptr getMember();
private:
std::shared_ptr<B> member
};
std::shared_ptr A::getMember()
{
return member;
}
什么是标准和最广泛接受的实现?
【问题讨论】:
-
提示:在 C++ 中,没有必要提及“面向对象编程”。据了解,这是您可能正在做的事情之一。这不是 1970 年代,“OOP”是一些需要解释的新奇事物,因此无需提请注意这一事实。也许您在这里真正谈论的是封装的概念,这是“OOP”的一个非常具体的方面。
标签: c++ shared-ptr unique-ptr