任何人都可以解释以下代码行,可在http://docs.openttd.org/ai__cargo_8cpp_source.html找到
return (AICargo::TownEffect)::CargoSpec::Get(cargo_type)->town_effect;
Run Code Online (Sandbox Code Playgroud)
如果这条线是:
return (AICargo::TownEffect) ::CargoSpec::Get(cargo_type)->town_effect;
Run Code Online (Sandbox Code Playgroud)
(注意之间的空间TownEffect)
和::
),那么我会罚款的理解.但是该文档*中没有空格,这意味着(AICargo::TownEffect)
是::运算符的左操作数.
这段代码如何工作/编译?或者由于一些模糊的C++规则,这两件事情是否相等?
*在cpp文件中也是如此.
除了分离令牌之外,C++语法中的空格通常不重要.
括号很重要,它们不能出现在qualified-id中,因此不存在等价:
(AICargo::TownEffect)::CargoSpec::Get
Run Code Online (Sandbox Code Playgroud)
和
AICargo::TownEffect::CargoSpec::Get
Run Code Online (Sandbox Code Playgroud)
在第一个中有两个qualified-id,一个在括号中命名一个类型,另一个命名一个函数.在此上下文中对括号类型的唯一有效解释是作为强制转换表达式.在右括号后是否有空格没有区别.
归档时间: |
|
查看次数: |
490 次 |
最近记录: |