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

C++ 类声明混淆-右大括号和分号之间的名称,c++,c,oop,class,struct,C++,C,Oop,Class,Struct,在本例中,在这个类定义中,右大括号后面和分号之间的“rect”是什么意思?我很难找到一个清楚的解释。另外:不管它是什么,你也能为结构做吗?它是一个CRectangle类型的对象,是全局的,或者根据上下文属于名称空间。rect是一个变量的名称(在本例中是一个对象) 正如它所说: class CRectangle { int x, y; public: void set_values (int,int); int area (void); } rect; 除了int

在本例中,在这个类定义中,右大括号后面和分号之间的“rect”是什么意思?我很难找到一个清楚的解释。另外:不管它是什么,你也能为结构做吗?

它是一个CRectangle类型的对象,是全局的,或者根据上下文属于名称空间。

rect
是一个变量的名称(在本例中是一个对象)

正如它所说:

class CRectangle {
    int x, y;
  public:
    void set_values (int,int);
    int area (void);
  } rect;
除了
int
之外,还有一种新类型的定义,称为
CRectangle
。通常,类类型是单独声明的,然后用作

  int rect;
正如您可能熟悉的,但是在这样的声明中声明一个新类型是完全合法的

是的,它适用于结构:

  CRectangle rect;
事实上,如果不打算再次使用该类型,您甚至不必为其命名:

  struct SRectangle { int x, y; } rect;

这称为“匿名结构”(它也适用于类)。

它声明了一个实例。就像:

  struct { int x, y; } rect;

<> C++中的<代码>类<代码>和<代码>结构> /代码>之间没有区别,除了<代码>结构> <代码>默认为公共(关于访问说明符和继承)

结构和类之间唯一的区别是结构具有公共默认继承和访问,而类将私有作为两者的默认值。

它是一个“未命名结构”,而不是“匿名结构”。C++没有匿名结构。看见
class CRectangle
{
    // ...
};

CRectangle rect;