estructuras estructural entre diferencia dev arreglo anidacion c++ oop struct

estructural - typedef c++



C++: ¿Cuándo debería usar structs en lugar de clases y dónde están las diferencias de velocidad? (5)

1) No existe una diferencia real entre los 2 que no sea el hecho de que los miembros de la estructura son, por defecto, públicos, donde las clases son privadas.

2) No es EXACTAMENTE lo mismo.

Editar: tenga en cuenta que puede usar herencia virtual con estructuras. Ellos son TAN idénticos :)

  • ¿Cuándo debería usar una struct lugar de una clase? Actualmente estoy usando clases para todo, desde envoltorios de texturas OpenGL hasta fuentes de mapas de bits.

  • ¿Es una clase que uso simplemente como una struct (sin uso de herencias, polimorfismo, etc.) aún más lenta que una struct ?


En lugar de rebajar y referirme a otras preguntas, volveré a repetir lo que otros dijeron antes de agregarlos.

struct y class son idénticos en C ++, la única excepción es que struct tiene un acceso predeterminado de public , y class tiene un acceso predeterminado de private. El soporte de características de rendimiento e idioma son idénticos.

Idiomáticamente, sin embargo, struct se usa principalmente para clases "tontas" (plain-old-data). class se usa más para encarnar una verdadera clase.

Además, también he utilizado struct para objetos de función definidos localmente, tales como:

struct something { something() : count(0) { } void operator()(int value) { std::cout << value << "-" << count++ << "/n"; } int count; } doSomething; std::vector<int> values; ... std::foreach(values.begin(); values.end(); doSomething);


Las estructuras y las clases en C ++, como sabrá, difieren únicamente por su nivel de acceso predeterminado (y la accesibilidad predeterminada de sus bases: public for struct, private for class).

Algunos desarrolladores, incluido yo mismo, preferimos usar estructuras para POD-types de POD-types , es decir, con estructuras de estilo C, sin funciones virtuales, bases, etc. Las estructuras no deben tener un comportamiento, son solo un conjunto de datos colocados en un objeto.

Pero eso es, naturalmente, una cuestión de estilo, y obviamente ninguno de los dos es más lento


Me gusta usar clases cuando necesito tener un destructor explícito. Porque entonces, debe seguir la regla de tres, en cuyo caso debe escribir un constructer de copia y un overloader de asignación. Con todo esto, parece más natural usar una clase que una estructura.


como otros han explicado, son lo mismo excepto por los niveles de acceso predeterminados.

la única razón por la cual las clases pueden percibirse como más lentas es porque un buen estilo (pero no el único) es el que menciona ArmenTsirunyan : struct para los tipos de POD, class para las clases de objetos en toda regla. Los últimos generalmente incluyen herencia y métodos virtuales, por lo tanto, vtables, que son un poco más lentos para llamar que las funciones directas.