【问题标题】:Class declaration confusion - name between closing brace and semi-colon类声明混淆 - 右大括号和分号之间的名称
【发布时间】:2011-02-01 08:57:14
【问题描述】:
class CRectangle {
    int x, y;
  public:
    void set_values (int,int);
    int area (void);
  } rect;

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

【问题讨论】:

    标签: c++ c oop class struct


    【解决方案1】:

    rect 是变量的名称(在本例中为对象)。

    就像它说的那样:

      int rect;
    

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

      CRectangle rect;
    

    正如您可能熟悉的那样,但在这样的声明中声明新类型是完全合法的。

    是的,它适用于结构:

      struct SRectangle { int x, y; } rect;
    

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

      struct { int x, y; } rect;
    

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

    【讨论】:

    【解决方案2】:

    它是一个 CRectangle 类型的对象,它是全局的或属于取决于上下文的命名空间。

    【讨论】:

      【解决方案3】:

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

      class CRectangle
      {
          // ...
      };
      
      CRectangle rect;
      

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2010-10-21
          • 2023-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-07
          • 2011-02-09
          相关资源
          最近更新 更多