Possible Duplicate:
casting unused return values to voidC++鑄造無效的目的是什麼?
我看了一些源代碼,並在接口類是許多虛擬函數聲明和缺省實現這樣:
virtual bool FunctionName(TypeName* pointer)
{
(void)pointer;
return true;
}
請問什麼是鑄造指針的目的在默認實現中失效?
Possible Duplicate:
casting unused return values to voidC++鑄造無效的目的是什麼?
我看了一些源代碼,並在接口類是許多虛擬函數聲明和缺省實現這樣:
virtual bool FunctionName(TypeName* pointer)
{
(void)pointer;
return true;
}
請問什麼是鑄造指針的目的在默認實現中失效?
一舉多得取決於你投什麼
T
給出,並返回了某些函數調用的結果可能與不同在某些情況下。顯式類型轉換到T
可能,在void
的情況下,防止編譯時錯誤:int f() { return 0; } void g() { return (void)f(); }
(void)a, b
永遠不會調用一個重載逗號操作功能)。注意,標準保證永遠不會有所謂的,如果你施放一個類對象void
一個operator void()
(一些版本的GCC忽略規則,雖然)。
在這種情況下,它只是避免編譯器關於未使用的參數警告。
+1:爲了給出正確的答案 – 2010-11-14 19:07:58
爲什麼首先要做這樣的參數? – stackptr 2014-03-18 22:58:06
該參數可能發生,因爲其他一些也實現此虛函數的類實際上使用該參數。 – 2014-07-24 11:29:15
這不應該編譯,因爲函數需要返回一個值。 – 2010-11-14 17:34:32
這被問了無數次。將某些東西轉換爲「void」表示您沒有使用返回值。在你的情況下,這是一個無操作。 – zneak 2010-11-14 17:35:58
@zneak:「指針」不是一個返回值。不是這個問題的一個騙局,儘管我確信這個參數也被覆蓋過。 – 2010-11-14 17:46:44