[c++] Clase vs Struct solo para datos?



Answers

Un punto lateral es que las estructuras se usan a menudo para estructuras de datos inicializadas agregadas, ya que todos los miembros de datos no estáticos deben ser públicos de todos modos (C ++ 03, 8.5.1 / 1).

struct A {  // (valid)
{
   int a;
   int b;
} x = { 1, 2 };

struct A {  // (invalid)
private:
   int a;
   int b;
} x = { 1, 2 };

class A {  // (invalid)
   int a;
   int b;
} x = { 1, 2 };

class A {  // (valid)
public:
   int a;
   int b;
} x = { 1, 2 };

class A {  // (invalid)
public:
   int a;
private:
   int b;
} x = { 1, 2 };
Question

¿Hay alguna ventaja sobre usar una clase sobre una estructura en casos como estos? (nota: solo contendrá variables, nunca habrá funciones)

class Foo { 
private:   
   struct Pos { int x, y, z };
public:    
   Pos Position; 
};

Versus:

struct Foo {
   struct Pos { int x, y, z } Pos;
};

Preguntas similares:




La única diferencia entre una clase y una estructura es que los miembros de la estructura son públicos por defecto y los miembros de la clase son privados por defecto. Así que digo ir con el que más te guste. Estoy seguro de que hay argumentos para hacer en términos de cuál es más legible, pero realmente no creo que sea un gran problema.




Si el contenido del tipo no tiene problemas de asignación de memoria (como plain int), entonces usar struct está bien si esa es la forma en que desea ir y ha tomado una decisión consciente al respecto que puede justificar a quienes usan su código. Sin embargo, si alguno de los miembros es un tipo de puntero, entonces necesita pensar mucho sobre los problemas de administración de memoria. Puede que aún esté bien usar una struct , pero es mucho más probable que necesite un destructor y algunos constructores, y así sucesivamente. En ese punto, quieres una class .




Related