对于A类,整数转换运算符看起来像这样;转换运算符如何返回值?
operator int() //Here we don't specify any return type
{
return intValue;
}
上面的函数在返回值类型出现不指定时能够返回一个值吗?它似乎没有返回“任何东西”,但我知道这不是void
。
当没有指定返回类型时,这有何意义?
对于A类,整数转换运算符看起来像这样;转换运算符如何返回值?
operator int() //Here we don't specify any return type
{
return intValue;
}
上面的函数在返回值类型出现不指定时能够返回一个值吗?它似乎没有返回“任何东西”,但我知道这不是void
。
当没有指定返回类型时,这有何意义?
返回类型operator T()
始终为T
。这是C++的特例。
它不使用标准函数原型语法T foo()
因为2起到具有相同名称的不同仅通过返回类型不能共存(例如int foo()
与double foo()
冲突)。如果使用此语法,则只能定义1个转换运算符重载,这是不合需要的。
+1用于提及返回类型的重载 – 2010-01-10 12:36:40
返回值operator T()
其中T
是一种类型始终是T
。
转换运算符的名称是它的类型。如果情况并非如此,您可以定义一个实际返回double的int转换运算符(例如)。有些类似的思路适用于构造函数,它们也没有返回类型。
我认为太多提升类型签名的重要性是您思考的障碍。类型签名通常是*什么告诉你返回类型 - *除了*在转换函数的情况下,其中返回类型由语法上看起来像函数的“名称”给出。 – 2010-01-10 12:17:10