una referencia publico programación programacion poo orientada objetos objeto métodos miembros miembro herencia clase atributos c++ object static-members

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.