Miembros de clase

Las clases pueden tener estos tipos de miembros:

Comentarios

La lista de miembros de una clase se puede dividir en secciones private, protected y public mediante el uso de palabras clave conocidas como especificadores de acceso. Un signo de dos puntos : debe ir a continuación del especificador de acceso. Estas secciones no necesitan ser contiguas, es decir, cualquiera de estas palabras clave puede aparecer varias veces en la lista de miembros. La palabra clave designa el acceso de todos los miembros hacia arriba hasta el especificador de acceso siguiente o la llave de cierre.

Las declaraciones de miembros en la lista de miembros están separadas por signos de punto y coma ;. Vea Sintaxis de declaración de miembros de clase.

El objetivo de la lista de miembros es:

  • Declarar el conjunto de miembros completo para una clase determinada.

  • Especificar el acceso (público, privado o protegido) asociado a los distintos miembros de clase.

En la declaración de una lista de miembros, puede declarar miembros solo una vez; la nueva declaración de miembros produce un mensaje de error. Dado que una lista de miembros es un conjunto completo de miembros, no puede agregar miembros a una clase determinada con declaraciones de clase subsiguientes.

Los declaradores de miembros no pueden contener inicializadores. El suministro de un inicializador produce un mensaje de error, como se muestra en el código siguiente:

// class_members1.cpp
// C2864 expected
class CantInit
{
public:
    long l = 7;       // Error: attempt to initialize
                      //  class member.
    static int i = 9; // Error: must be defined and initialized
                      // outside of class declaration.
};
int main()
{
}

Dado que se crea una instancia independiente de datos miembro no estáticos para cada objeto de un tipo de clase determinado, la manera correcta de inicializar los datos de miembro es utilizar el constructor de la clase. (Los constructores se describen en Constructores).

Solo hay una copia compartida de los miembros de datos estáticos para todos los objetos de un tipo de clase determinado. Los miembros de datos estáticos se deben definir y se pueden inicializar en el ámbito de archivo. (Para obtener más información sobre los miembros de datos estáticos, vea Miembros de datos estáticos). En el ejemplo siguiente se muestra cómo se realizan estas inicializaciones:

// class_members2.cpp
class CanInit
{
public:
    CanInit() { l = 7; } // Initializes l when new objects of type 
                         //  CanInit are created.
    long       l;
    static int i;
    static int j;
};

// i is defined at file scope and initialized to 15.
// The initializer is evaluated in the scope of CanInit.
int CanInit::i = 15;                                                       

// The right side of the initializer is in the scope 
// of the object being initialized
int CanInit::j = i;  

int main()
{
}

Nota

El nombre de clase, CanInit, debe preceder a i para especificar que el i definido es un miembro de la clase CanInit.

Específicos de Microsoft

Microsoft C++ permite que se inicialicen miembros de datos de tipo static, const integral y const enum en la definición de clase. Vea Extensiones de Microsoft para C y C++.

Vea también

Referencia

Clases, estructuras y uniones