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

时间:2010-03-26 21:00:24

标签: c++ c oop class struct

class CRectangle {
    int x, y;
  public:
    void set_values (int,int);
    int area (void);
  } rect;

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

4 个答案:

答案 0 :(得分:11)

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

就像它说的那样:

  int rect;

除了代替int之外,还有一个新类型的定义,称为CRectangle。通常,类类型是单独声明的,然后用作

  CRectangle rect;

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

是的,它适用于结构:

  struct SRectangle { int x, y; } rect;

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

  struct { int x, y; } rect;

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

答案 1 :(得分:2)

CRectangle类型的对象是全局的或属于名称空间,具体取决于上下文。

答案 2 :(得分:1)

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

class CRectangle
{
    // ...
};

CRectangle rect;

C ++中的classstruct之间没有区别,除了struct默认为public(关于访问说明符和继承)

答案 3 :(得分:1)

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