誰能解釋一下下面的代碼行,在http://docs.openttd.org/ai__cargo_8cpp_source.html強制轉換和命名空間運算符之間沒有空格?
return (AICargo::TownEffect)::CargoSpec::Get(cargo_type)->town_effect;
發現如果這條線是:
return (AICargo::TownEffect) ::CargoSpec::Get(cargo_type)->town_effect;
(注意TownEffect)
和::
之間的空間),那麼我會明白罰款。但是該文檔中沒有空格*,這意味着(AICargo::TownEffect)
是::運算符的左操作數。
這段代碼是如何工作/編譯的?還是由於一些模糊的C++規則,這兩件事情是等價的?
*在cpp文件中也是如此。
從技術上講,'AICargo :: TownEffect'是一個_type-id_而不是_qualified-id_,因爲它命名了一個類型而不是一個對象或函數。 – 2010-04-08 12:51:39