structs sirve que para define c++ class struct member-functions

sirve - ¿Puede C++ struct tener funciones miembro?



structs in java (4)

Estaba bastante confundido acerca de la diferencia entre struct y clase, ya que parecía verlos utilizados para casi las mismas cosas. Busqué en Google las diferencias y la única respuesta que vi fue que las estructuras tienen miembros públicos por defecto y las clases tienen miembros privados por defecto. Sin embargo, mis profesores me acaban de decir que las estructuras no pueden contener funciones miembro. Pero he visto muchos hilos en Internet donde las personas incluyen funciones de miembros en las estructuras y dicen específicamente que está bien hacerlo.

Mis profesores parecen inflexibles en que las estructuras, por definición, no pueden tener funciones, entonces, ¿qué está pasando? Lo único que se me ocurre es que tal vez el compilador cambie las funciones dentro de una estructura a otra cosa para que técnicamente no contengan funciones ... ¿Hay una respuesta clara a estas contradicciones?


Busqué en Google las diferencias y la única respuesta que vi fue que las estructuras tienen miembros públicos por defecto y las clases tienen miembros privados por defecto.

Si eso es correcto. Además, las bases de una estructura se heredan públicamente de forma predeterminada, mientras que las bases de una clase se heredan de forma privada de forma predeterminada.

Declarar una función como miembro de una estructura tiene exactamente la misma semántica que declarar una función como miembro de una clase, a excepción de la diferencia que ha notado. En cada caso, se llaman funciones miembro .


Me parece que solo porque algo está permitido por un idioma NO significa que sea una buena idea. Aunque técnicamente una estructura C ++ puede contener funciones, no creo que la intención original del tipo de datos struct fuera contener funciones. ¿No fue el objetivo principal de la introducción de un tipo de clase apoyar la definición de los datos y la lógica que actúa sobre los datos en una relación estrecha, promoviendo así interfaces más saludables con los datos?


Sus profesores están demostradamente equivocados, suponiendo que en realidad están hablando de C ++ y no de C.

Es trivialmente fácil de probarse esto en código, o recoger el lenguaje de programación C ++ y buscar estructuras.


Las structs C ++ definitivamente pueden tener funciones de miembro . Las estructuras C, por otro lado, son una bestia muy diferente: son esencialmente arreglos que proporcionan nombres e información de tipo para ciertas indicaciones.