C++ 为什么(类A{}fkldsjflksdjflsj;;)可以编译?
我在for循环中放置了一些错误的东西,但它似乎仍然可以编译。然后我尝试了for循环语法,似乎下面的代码是:for循环中的start条件中的类定义,带有一些像这样的无意义字符,可以编译C++ 为什么(类A{}fkldsjflksdjflsj;;)可以编译?,c++,syntax,C++,Syntax,我在for循环中放置了一些错误的东西,但它似乎仍然可以编译。然后我尝试了for循环语法,似乎下面的代码是:for循环中的start条件中的类定义,带有一些像这样的无意义字符,可以编译 int main(){ for(class A{} fkldsjflksdjflsj;;) return 0; } 还有 但不是 for(class A fkldsjflksdjflsj;;) 为什么?的的第一部分可能包含变量声明。(和一些其他类型的声明)。幸运的是,这就是我们所拥有的: cla
int main(){
for(class A{} fkldsjflksdjflsj;;)
return 0;
}
还有
但不是
for(class A fkldsjflksdjflsj;;)
为什么?的
的第一部分可能包含变量声明。(和一些其他类型的声明)。幸运的是,这就是我们所拥有的:
class A
{
} zzz;
声明一个变量zzz
,其类型为class a
,该类没有用户定义的成员
A类fkldsjflksdjflsj
失败,因为未定义A类
。但是,如果您在前面定义了类A
,就可以了。您已经在for循环范围内声明了名为fkldsjflksdjflsj
的类A
的实例。class A fkldsjflksdjflsj
声明失败,因为您没有指定类主体。fkldsjflksdjflsj
不是“一些无意义的字符”。它是类型为class a
的变量的名称,您刚才也通过语法class a{}
声明了该变量。因此,整个过程就是一个变量声明,这正是for
语句的第一部分所要求的。您可以在那里编写任何简单的声明。将其作为指针将起作用class a*a
,但这可能并不相关。
class A
{
} zzz;