Membros de classe
As classes podem ter estes tipos de membros:
Classes, que incluem classes, estruturas e uniões. (Consulte Declarações de classes aninhadas e Uniões.)
-
Dica
Os friends são incluídos na lista anterior porque estão contidos na declaração da classe.Porém, eles não são membros da classe true, pois não estão no escopo da classe.
Comentários
A lista de membros de uma classe pode ser dividida em private, protected e em seções públicas usando palavras-chave conhecidas como especificadores de acesso. Dois pontos**:** deve seguir o especificador de acesso. Essas seções não precisam ser contíguas, ou seja, qualquer uma dessas palavras-chave pode aparecer várias vezes na lista de membros. A palavra-chave designa o acesso de todos os membros acima até o próximo especificador de acesso ou a próxima chave de fechamento.
As declarações de membros na lista de membros são separadas por ponto-e-vírgula ;. Consulte Sintaxe da declaração de membro de classe.
A finalidade da lista de membros é:
Declare o conjunto completo de membros de uma determinada classe.
Especifique o acesso (público, particular ou protegido) associado a vários membros da classe.
Na declaração de uma lista de membros, você pode declarar membros apenas uma vez; a redeclaração dos membros gera uma mensagem de erro. Como uma lista de membros é um conjunto completo de membros, você não pode adicionar membros a uma determinada classe com declarações de subsequentes.
Os declaradores de membros não podem conter inicializadores. Fornecer um inicializador gera uma mensagem de erro, conforme ilustrado no seguinte código:
// 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()
{
}
Como uma instância separada de dados de membros não estáticos é criada para cada objeto de um determinado tipo de classe, a forma correta de inicializar dados de membro é usar o construtor de classe. (Os construtores são abrangidos em Construtores.)
Há apenas uma cópia compartilhada membros de dados estáticos para todos os objetos de um determinado tipo de classe. Os membros de dados estáticos devem ser definidos e podem ser inicializados no escopo do arquivo. (Para obter mais informações sobre membros de dados estáticos, consulte Membros de dados estáticos.) O exemplo a seguir mostra como realizar essas inicializações:
// 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()
{
}
Dica
O nome da classe, CanInit, deve preceder i para especificar que i que está sendo definida é um membro da classe CanInit.
Específico da Microsoft
O Microsoft C++ permite que os membros de dados static, const integral e const enum sejam inicializados na definição da classe. Consulte Extensões da Microsoft para C e C++.