2010-01-10 47 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轉換運算符(例如)。有些類似的思路適用於構造函數,它們也沒有返回類型。