C++ 类声明混淆-右大括号和分号之间的名称
在本例中,在这个类定义中,右大括号后面和分号之间的“rect”是什么意思?我很难找到一个清楚的解释。另外:不管它是什么,你也能为结构做吗?它是一个CRectangle类型的对象,是全局的,或者根据上下文属于名称空间。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
是一个变量的名称(在本例中是一个对象)
正如它所说:
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;