Val*_*ond 5 c++ compiler-construction
可能重复:
在C++类中,为什么在结束括号后的分号
这是我一直想知道的事情,为什么你必须在c ++的类,结构或枚举的结束括号后面加一个分号?
更糟糕的(或实际问题),为什么编译器在发出警告时会发出错误?
将分号放在那里是否真的很重要,为什么?
Ida*_*rye 10
它是C的遗留物.您可以在cladd/struct/enum声明之后声明变量.代码:
class A{};
A a;
Run Code Online (Sandbox Code Playgroud)
与以下相同:
class A{} a;
Run Code Online (Sandbox Code Playgroud)
编译器需要;
知道你不想在类声明后声明变量.
将分号放在那里是否真的很重要,为什么?
是.这可能有用.
您可以定义结构,并可以将对象声明为:
struct A
{
//members
} obj;
Run Code Online (Sandbox Code Playgroud)
obj
是一个类型的对象A
,你如上所示声明它.在声明变量之后,以相同的方式放置分号,例如:
int i; //declares i of type int
std::string s; //declares s of type std::string
struct {int x,y,z;} point; //declares point of an unnamed struct type
Run Code Online (Sandbox Code Playgroud)
这里前两个声明看起来非常熟悉,但最后一个看起来有点陌生,因为它定义了一个未命名的结构,同时声明了一个名为point
unnamed struct 的对象.
最重要的是,无论您如何声明对象,无论它们的类型是什么,均匀地声明对象后都会添加分号.
不仅如此,你甚至可以typedef
统一的方式:
typedef int my_int;
typedef std::string my_string;
typedef struct {int x,y,z;} my_point;
Run Code Online (Sandbox Code Playgroud)
现在,所有的这些my_int
,my_string
和my_point
有型.
但是当你不同时做任何事情(即既没有声明对象,也没有定义typedef),那么你只需要留下这样的空白,没有任何声明/定义.但值得注意的是,它一直为您提供有趣且实用的功能.
归档时间: |
|
查看次数: |
3327 次 |
最近记录: |