向量的返回类型

时间:2014-10-22 13:24:03

标签: c++ vector types return const

我的ClassA有一个private: vector<ClassB> vec。我在ClassA::fillVec()填充了向量。

现在我想return向量(通过引用?所以没有复制),我也希望使用const禁止任何进一步的更改。

语法仍然让我感到困惑。到目前为止我所拥有的是什么 const std::vector<ClassB> &ClassA::fillVec(...) const {}

但我不知道这是不对的。即使它是对的,我在互联网上找到了这个解决方案,所以如果有人能解释为什么这两个const

2 个答案:

答案 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