2010-01-10 101 views
15

对于A类,整数转换运算符看起来像这样;转换运算符如何返回值?

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

上面的函数在返回值类型出现不指定时能够返回一个值吗?它似乎没有返回“任何东西”,但我知道这不是void

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

+0

我认为太多提升类型签名的重要性是您思考的障碍。类型签名通常是*什么告诉你返回类型 - *除了*在转换函数的情况下,其中返回类型由语法上看起来像函数的“名称”给出。 – 2010-01-10 12:17:10

回答

20

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

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

+0

+1用于提及返回类型的重载 – 2010-01-10 12:36:40

6

返回值operator T()其中T是一种类型始终是T

3

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