C++ 转换运算符如何返回值?

C++ 转换运算符如何返回值?,c++,casting,operators,C++,Casting,Operators,对于类a,整数转换运算符类似于 operator int() //Here we don't specify any return type { return intValue; } 当返回值类型似乎未指定时,上述函数如何返回值?它似乎没有返回“任何东西”,但我知道它不是void 当未指定返回类型时,这有什么意义?运算符T()的返回类型始终是T。这是C++的一个特例。 它不使用标准函数原型语法T foo(),因为只有返回类型不同的两个同名函数不能共存(例如int foo()与doubl

对于类a,整数转换运算符类似于

operator int() //Here we don't specify any return type
{
    return intValue;
}
当返回值类型似乎未指定时,上述函数如何返回值?它似乎没有返回“任何东西”,但我知道它不是
void


当未指定返回类型时,这有什么意义?

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

其中
T
是类型的
T
的返回值总是
T

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

我认为过度提升类型签名的重要性是您思维中的障碍。类型签名通常是告诉您返回类型的内容——转换函数除外,在转换函数中,返回类型在语法上类似于函数的“名称”。