【问题标题】:understanding the locations of const [duplicate]了解 const 的位置 [重复]
【发布时间】:2015-08-12 19:24:00
【问题描述】:

如果我有一个如下所示的成员函数:

const T& temp const( const T& t) const{
    //some code
    return t;
}

按从左到右的顺序,每个 const 做什么? 这是对还是错?

  1. 返回常量对象
  2. 不能更改任何不可变的成员字段
  3. 只能传入 T 类型的 const 对象
  4. 这是一个 const 成员函数,只能用 const 对象调用

【问题讨论】:

  • 第二个格式不正确。你试过编译这个吗?在什么编译器上?

标签: c++ constants


【解决方案1】:
const T& temp const( const T& t) const{
^^1^^         ^^2^^  ^^3^^       ^^4^^

从左到右依次为:

  1. 此函数返回对const T 的引用。所以返回值是不可修改的。
  2. 语法无效。移除。
  3. 此函数将一个对T 的不可修改引用作为其参数。它可能是对现有对象的引用。它可以从一个生命周期延长到t 的临时对象调用。你不能说什么temp 是用什么来调用的——它可能是一个左值,也可能是一个右值(如果T 是可复制或可移动构造的)。
  4. 如果temp 不是成员函数,语法错误。否则,它是成员函数上的const-限定,表明它可以在const 对象上调用,并且该函数不能修改this 的任何非mutable 成员或调用任何其他非-const-限定成员函数。

【讨论】:

    猜你喜欢
    • 2013-02-15
    • 1970-01-01
    • 2014-12-22
    • 2017-02-10
    • 2015-07-02
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多