类声明混淆 - 右括号和分号之间的名称

Mat*_*w H 5 c c++ oop struct class

class CRectangle {
    int x, y;
  public:
    void set_values (int,int);
    int area (void);
  } rect;
Run Code Online (Sandbox Code Playgroud)

在这个例子中,在这个类定义中,右括号之后的'rect'和分号之间的含义是什么?我找不到明确的解释.另外:不管是什么,你也可以为结构做吗?

Tyl*_*nry 11

rect 是变量的名称(在这种情况下是一个对象).

就像它说的那样:

  int rect;
Run Code Online (Sandbox Code Playgroud)

除了int有一个新类型的定义,称为CRectangle.通常,类类型分别声明,然后用作

  CRectangle rect;
Run Code Online (Sandbox Code Playgroud)

正如您可能熟悉的那样,但将新类型声明为此类声明的一部分是完全合法的.

是的,它适用于结构:

  struct SRectangle { int x, y; } rect;
Run Code Online (Sandbox Code Playgroud)

事实上,如果您不打算再次使用它,您甚至不必为该类型指定名称:

  struct { int x, y; } rect;
Run Code Online (Sandbox Code Playgroud)

这被称为"匿名结构"(它也适用于类).