對於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