class CRectangle {
int x, y;
public:
void set_values (int,int);
int area (void);
} rect;
В этом примере, что делает 'rect' после того, как закрывающая фигурная скобка и между точкой с запятой означает в этом определении класса? Я испытываю затруднения при нахождении четкого объяснения. Также: Независимо от того, что это, можно ли сделать это для структур также?
rect
- имя переменной (в данном случае объекта).
Это как если бы было сказано:
int rect;
за исключением того, что вместо int
есть определение нового типа, называемого CRectangle
. Обычно типы классов объявляются отдельно, а затем используются как
CRectangle rect;
, как вы, вероятно, знакомы, но совершенно законно объявлять новый тип как часть такого объявления.
И да, это работает для структур:
struct SRectangle { int x, y; } rect;
На самом деле вам даже не нужно давать типу имя, если вы не планируете использовать его снова:
struct { int x, y; } rect;
это называется «анонимной структурой» ( и это тоже работает для классов).
Это объект типа CRectangle, который является глобальным или принадлежит пространству имен в зависимости от контекста.
Объявляет экземпляр. Точно так же:
class CRectangle
{
// ...
};
CRectangle rect;
Нет никакой разницы между классом
и struct
в C ++, за исключением struct
по умолчанию общедоступной (в отношении спецификаторов доступа и наследование)
Единственное различие между структурами и классами состоит в том, что у структур есть общедоступное по умолчанию наследование и доступ, а классы используют частное по умолчанию для обоих.