转换运算符如何返回值?

时间:2010-01-10 12:06:16

标签: c++ casting operators

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

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

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

如果未指定返回类型,这有何意义?

3 个答案:

答案 0 :(得分:20)

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

它不使用标准函数原型语法T foo(),因为只有返回类型不同的2个具有相同名称的函数不能共存(例如int foo()double foo()冲突)。如果使用此语法,那么您只能定义1个转换运算符重载,这是不合需要的。

答案 1 :(得分:6)

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

答案 2 :(得分:3)

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