Это действительно не нужно в строгом смысле слова и никогда не было. То есть вы всегда можете назначить имя, например anonymous1
, anonymous2
и т. д. Но отслеживание большего количества имен, чем необходимо, - это всегда хлопот.
Где это удобно в любом месте, где вы хотите группировать данные, не указывая имя этой группе. Я мог бы придумать несколько примеров:
class foo {
class {
public:
void validate(int x) { m_x = x; }
bool valid() { return m_exists; }
private:
int m_x;
bool m_exists;
} maybe_x;
};
В этом случае int
и bool
логически связаны друг с другом, так что имеет смысл сгруппировать их. Однако для этого конкретного примера, вероятно, имеет смысл создать фактический необязательный тип или использовать один из доступных, потому что этот шаблон, скорее всего, используется и в других местах. В других случаях эта схема группировки может быть настолько особенной, что она заслуживает того, чтобы оставаться только в этом классе.
Я действительно действительно предполагаю, что анонимные классы редко используются (я использовал их только пару раз в своей жизни, вероятно). Часто, когда вы хотите группировать данные, это не относится к классу или области, а также к группировке, которая также имеет смысл в других местах.
Почему у вас есть анонимная-структура? – Nawaz
@ Наваз Ах да, ты прав. Я мог бы быть той же причиной, почему она существует на C. В любом случае мне любопытно, что конкретно для C++. Поскольку C++ - это много другой язык с C. – Eonil