对于A类,整数转换运算符看起来像;
operator int() //Here we don't specify any return type
{
return intValue;
}
如果不指定返回值类型,上述函数如何能够返回值?它似乎没有返回“任何东西”,但我知道它不是void
。
如果未指定返回类型,这有何意义?
答案 0 :(得分:20)
operator T()
的返回类型始终为T
。这是C ++的一个特例。
它不使用标准函数原型语法T foo()
,因为只有返回类型不同的2个具有相同名称的函数不能共存(例如int foo()
与double foo()
冲突)。如果使用此语法,那么您只能定义1个转换运算符重载,这是不合需要的。
答案 1 :(得分:6)
其中operator T()
类型的T
的返回值始终为T
。
答案 2 :(得分:3)
转换运算符的名称是其类型。如果不是这种情况,您可以定义实际返回double的int转换运算符(例如)。有点类似的思路适用于构造函数,它们也没有返回类型。