转换运算符如何返回值?

22

对于一个类A来说,整数转换操作符可能看起来像这样:

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

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

当未指定返回类型时,这有何意义呢?


1
我认为过于强调类型签名的重要性是你思考的障碍。类型签名通常告诉你返回类型 - 除了转换函数的情况,其中返回类型由看起来像函数“名称”的语法给出。 - j_random_hacker
3个回答

27
operator T()的返回类型始终为T。这是C++的一个特殊情况。
它不使用标准函数原型语法T foo(),因为只有返回类型不同但名称相同的2个函数不能共存(例如int foo()double foo()冲突)。如果使用此语法,则只能定义1个转换运算符重载,这是不可取的。

对于 operator const T(),返回类型是 T 还是 const T - mada

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

4
转换运算符的名称就是它的类型。如果不是这样,你可以定义一个返回 double 的 int 转换运算符(例如)。构造函数也没有返回类型,类似的思路适用于它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接