我的ClassA
有一个private: vector<ClassB> vec
。我在ClassA::fillVec()
填充了向量。
现在我想return
向量(通过引用?所以没有复制),我也希望使用const
禁止任何进一步的更改。
语法仍然让我感到困惑。到目前为止我所拥有的是什么
const std::vector<ClassB> &ClassA::fillVec(...) const {}
但我不知道这是不对的。即使它是对的,我在互联网上找到了这个解决方案,所以如果有人能解释为什么这两个const
答案 0 :(得分:1)
您想要返回const
引用以阻止用户更改它;但函数本身不能是const
,因为它修改了一个类成员。
const std::vector<ClassB> &fillVec(<parameters>);
^ ^
const return value no const here
您将在成员函数上使用第二个const
,这些函数不应该修改它们被调用的对象。
答案 1 :(得分:1)
第一个const
表示返回类型为const
引用,即不能通过引用修改向量。
末尾的const
表示不允许成员函数修改(ClassA
)对象。因此,允许在const
ClassA
实例上调用该方法。这当然与函数的目的相矛盾,假设它应该修改成员;因此,它不应该是const
。