【问题标题】:How does conversion operator return a value?转换运算符如何返回值?
【发布时间】:2011-01-03 11:05:15
【问题描述】:

对于 A 类,整数转换运算符看起来像:

operator int() //Here we don't specify any return type
{
    return intValue;
}

上面的函数在其返回值类型似乎未指定时如何能够返回一个值?它似乎没有返回“任何东西”,但我知道它不是 void

如果没有指定返回类型,这有什么意义?

【问题讨论】:

  • 我认为过分提升类型签名的重要性是你思考的障碍。类型签名通常告诉你返回类型——except在转换函数的情况下,返回类型由语法上看起来像“名称”的东西给出的功能。

标签: c++ casting operators


【解决方案1】:

转换运算符的名称是它的类型。如果不是这种情况,您可以定义一个实际返回双精度的 int 转换运算符(例如)。类似的思路也适用于没有返回类型的构造函数。

【讨论】:

    【解决方案2】:

    operator T() 的返回值(其中T 是一个类型)始终为T

    【讨论】:

      【解决方案3】:

      operator T() 的返回类型始终为T。这是 C++ 的一个特例。

      它不使用标准函数原型语法T foo(),因为只有返回类型不同的两个同名函数不能共存(例如int foo()double foo() 冲突)。如果使用此语法,则只能定义 1 个转换运算符重载,这是不可取的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-09
        • 2016-07-14
        • 1970-01-01
        • 1970-01-01
        • 2016-11-02
        • 2012-01-01
        • 2013-07-31
        • 2019-12-29
        相关资源
        最近更新 更多