c++ - 通过引用返回拥有的指针

标签 c++ c++11

假设您正在定义两个类,A 和 B,B 有一个指向 A 实例的指针,并负责管理该实例的生命周期。像这样:

class A;

class B
{
public:
    B(A *a);
    ~B() { delete m_a; }
private:
    A *m_a;
};

B::get_a 方法返回常量引用是否更合适:

const A &get_a() const
{
    return *m_a;
}

或者只返回指针:

const A *get_a() const
{
    return m_a;
}

最佳答案

B has a pointer to an instance of A, and is responsible for managing the lifetime of that instance.

B 是唯一指针的实现吗?标准提供了唯一指针的实现:std::unique_ptr。我建议使用它代替 B

Would it be more appropriate for the method B::get_a to return a constant reference:

取决于 m_a == nullptr 是否是 B 的有效状态。如果是,那么如果您想返回引用,则需要抛出这种情况。

关于c++ - 通过引用返回拥有的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53086751/

相关文章:

c++ - 从 MFC C++ 应用程序中的资源加载 JPEG 文件

C++11 `T&&` 参数丢失其 `&&` 正确术语?

c++ - 我如何对没有复制构造函数的对象使用 std::sort?

c++ - 当结构是赋值的右值时,返回结构内变量的值

c++ - 从 C++ 程序向 Rails 服务器发送数据的最佳方式

c++ - 如何将 CFString 转换为 HFSUniStr255?

c++ - 存储在类中的函数指针

c++ - 为 lambda 重载运算符>>

c++ - 代码不应该打印 "1 1"而不是 "4 4"吗?

c++ - 在C++中乱序乘以 vector 中的数字