struct
es público por defecto, mientras que class
es privado por defecto.¿Mato a un gatito cada vez que uso struct en todas partes en lugar de clase?
Tomemos Ogre3D por ejemplo; si cambio todas las ocurrencias class
con struct, se compila (supongo) y el motor funciona igual que antes.
Si estoy en lo cierto, el código compilado es exactamente el mismo que antes, porque solo el compilador comprueba si se llama a un método privado/protegido, no se comprueba en el tiempo de ejecución.
Si todavía estoy bien, class
es sólo una palabra clave que sólo hace que sus ojos lindos y pidiendo "por favor encapsular los datos: se ahorrará un gatito", mientras que los ámbitos privados/protegidas están todavía en manos del usuario.
Sé que suena un poco escaso o irrelevante rebelde (algo así como "C es tio KISS, do not go"
Volver a la pregunta: ¿qué hace la norma dicen sobre esta pequeña diferencia entre struct
y class
mientras ¿Generar código de máquina? ¿Por qué agregar una palabra clave y tratar de impresionar a los programadores con el llamado "modelo OO" mientras no se aplica? ¿Fue influenciado por Java?
Todo lo contrario en realidad. Matas a un gatito cada vez que usas la palabra clave 'clase' donde 'struct' sería suficiente. No, no fue influenciado por Java ya que C++ fue el primero. –
C++ no es estrictamente un lenguaje OO, es un lenguaje multi-paradigma que admite más que solo OO, por lo que no busca aplicar los conceptos de OO en el desarrollador. Depende del desarrollador usar el estilo OO si así lo desean. Consulte la entrada de información de la etiqueta C++ aquí http://stackoverflow.com/tags/c%2b%2b/info – Glen
Hay más respuestas a esta pregunta en http://stackoverflow.com/questions/4090794/c-when-should -i-use-structs-instead-of-classes-and-where-are-the-speed-differe. –