I have a class :
class A
{
private:
vector<int> x;
public:
const vector<int>& immutable_data() {
return x;
}
vector<int>* mutable_data() {
return &x;
}
}
现在如果我使用这个类,在我的代码中,我是否必须检查 mutable_data() 返回的指针是否为空(假设我知道这个类的结构)。就我个人而言,我认为我不必这样做,因为我知道存在一个返回 const 引用的辅助 api,因此我的指针永远不能为 null(我无法想象这个函数会返回 null 的场景,即使它不知何故返回null,在这种情况下const ref版本的行为是什么)。或者我应该说我知道它是堆栈上现有对象的地址,所以它不能为空?这是思考或推理的正确方法吗?如果有人认为另一种方式,请给出一些示例代码。
对于生产代码中更常见的情况:如果我使用协议缓冲区,我已经知道为我的消息模板生成的代码(例如:类似于 stl 容器的重复字段),但我是否仍然需要每次执行 null 检查想要使用可变 api,因为它们总是通过指针或 const 引用返回。
通过引用返回不是我想要的。