在C++类声明中:
class Thing
{
...
};
Run Code Online (Sandbox Code Playgroud)
为什么我必须包括分号?
Joh*_*ohm 96
完整的语法基本上是
NAME {constituents}个实例;
其中"constituents"是类元素和方法的序列,"instances"是以逗号分隔的类实例列表(即对象).
例:
class FOO {
int bar;
int baz;
} waldo;
Run Code Online (Sandbox Code Playgroud)
声明类FOO和对象waldo.
实例序列可能为空,在这种情况下,您可能只有
class FOO {
int bar;
int baz;
};
Run Code Online (Sandbox Code Playgroud)
您必须将分号放在那里,以便编译器知道您是否声明了任何实例.
这是C兼容性的东西.
jk.*_*jk. 18
因为你可以选择声明对象
class Thing
{
...
}instanceOfThing;
Run Code Online (Sandbox Code Playgroud)
由于历史原因
一个很好的规则可以帮助您记住在哪里放置分号:
命名空间也不需要尾随分号,因为它们可以包含上述两者的混合(因此可以包含代码,因此不需要分号)。
int a,b,c,d;
int main(void) {
struct y {
}; a, b, c, d;
struct x {
} a, b, c, d;
}
Run Code Online (Sandbox Code Playgroud)
两种不同的语句,两种完全不同的含义,都是合法的C/C++,唯一的区别是;struct声明之后的内容。
a, b, c, d;在这种情况下,该语句本身仅计算a、b和c。d在这种情况下,这没有任何作用。
但是,如果它位于结构/类定义之后(在 之前);,它将创建所创建的结构/类的 4 个实例,a、b和cd
| 归档时间: |
|
| 查看次数: |
7591 次 |
| 最近记录: |