c++ - referencia - ¿Por qué una clase tiene permitido tener un miembro estático de sí mismo, pero no un miembro no estático?
métodos y atributos public private static en programación orientada a objetos (2)
Debido a que static
miembros de la clase static
no se almacenan en la instancia de la clase, es por eso que funcionaría una static
.
Almacenar un objeto dentro de otro objeto del mismo tipo rompería el tiempo de ejecución - tamaño infinito, ¿verdad?
¿Qué devolvería sizeof
? El tamaño del objeto necesita ser conocido por el compilador, pero dado que contiene un objeto del mismo tipo, no tiene sentido.
class base {
public:
base a;
};
Da error de compilación.
class base {
public:
static base a;
};
mientras que este código no da error de compilación
Supongo que el error es algo así como
el campo ''a'' tiene un tipo incompleto
Esto se debe a que cuando no es estático, la clase A
no está completamente definida hasta el corsé de cierre. Las variables de miembro estático, por otro lado, necesitan un paso de definición por separado después de que la clase está completamente definida, por lo que funcionan.
Busque la diferencia entre la declaración y la definición para obtener explicaciones más completas.