No es realmente necesario en un sentido estricto y nunca lo fue. Es decir. siempre se puede asignar un nombre, por ejemplo anonymous1
, anonymous2
etc. Pero hacer un seguimiento de más nombres de los necesarios siempre es una molestia.
Donde es útil es en cualquier lugar donde uno quiera agrupar datos sin darle un nombre a ese grupo. Podría llegar a un varios ejemplos:
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;
};
En este caso el int
y la bool
lógicamente pertenecen juntos, así que tiene sentido para agruparlos. Sin embargo, para este ejemplo concreto, probablemente tenga sentido crear un tipo opcional real o utilizar uno de los disponibles, ya que este patrón probablemente también se use en otros lugares. En otros casos, este patrón de agrupación podría ser tan especial, que merece permanecer solo en esa clase.
Realmente asumo, que las clases anónimas raramente se usan (solo las he usado un par de veces en mi vida, probablemente). A menudo, cuando uno quiere agrupar los datos, esto no es específico de la clase o el alcance, sino también una agrupación que también tiene sentido en otros lugares.
¿Por qué tienen estructura anónima? – Nawaz
@Nawaz Ah sí, tienes razón. Podría ser la misma razón por la que existe en C. De todos modos, tengo curiosidad sobre los casos específicamente para C++. Debido a que C++ es un lenguaje muy diferente con C. – Eonil