【问题标题】:Return type for a vector向量的返回类型
【发布时间】:2014-12-17 23:09:18
【问题描述】:

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

现在我想return 向量(通过引用?所以不要复制),我还想禁止使用const 进行任何进一步的更改。

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

但我不知道这是否正确。而且即使是对的,我还是在网上找到了这个解决方案,所以如果有人能解释一下为什么这两个const

【问题讨论】:

    标签: c++ vector types return constants


    【解决方案1】:

    第一个const表示返回类型为const引用,即不能通过引用修改向量。

    末尾的const表示不允许成员函数修改(ClassA)对象。因此允许在 const ClassA 实例上调用该方法。这当然与假设它应该修改成员的函数的目的相矛盾;因此它不应该是const

    【讨论】:

    • 很好的解释,tnx :)
    【解决方案2】:

    您想返回一个const 引用以防止用户更改它;但函数本身不能是const,因为它修改了一个类成员。

    const std::vector<ClassB> &fillVec(<parameters>);
    ^                                               ^
    const return value                              no const here
    

    您可以在不应修改被调用对象的成员函数上使用第二个 const

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多