Compartilhar via


Sintaxe de declaração de membro de classe

Os membros de dados de classe e os membros da função geralmente são declarados a seguir as regras para declarações.Eles consistem, nesta ordem:

  • Especificadores de declaração.Em classes, o armazenamento de classe especificadores de estático e mutável são permitidas para membros de dados.Os qualificadores de VC const e volatile são permitidas para membros de dados e a função.Os especificadores de declaração friend, estático, virtual e in-line são permitidos para funções, embora friend indica uma função não-membro.

  • Declaradores sem inicializadores.No caso de funções virtuais, o especificador puro do formulário = 0 é usada após o Declarador de função para especificar uma função essencialmente virtual (uma função virtual sem uma implementação nessa classe).

  • Opcionalmente, campos de bits.Consulte campos de bits.

OR

  • Definições de função.A definição de uma função pode ser incluída na classe.Se uma função de membro tão for definida, ele automaticamente é considerado in-line.

OR

Dados de membro não podem ser declarados como auto, extern, ou registrar classe de armazenamento.No entanto, podem, ser declarado como tendo estático classe de armazenamento.

Quando você declara uma friend classe em uma lista de membros, você pode omitir a lista de Declarador de membro.Para obter mais informações sobre amigos, consulte amigo especificador e amigos.Mesmo se um nome de classe não foi introduzido, ele pode ser usado em um friend declaração.Isso friend declaração apresenta o nome.No entanto, em declarações de membro para essas classes, a sintaxe do especificador de tipo elaborated deve ser usada, como mostrado no exemplo a seguir:

// class_member_declaration_syntax.cpp
// compile with: /c
struct HasFriends {
   friend class NotDeclaredYet;
};

No exemplo anterior, há nenhuma lista de Declarador de membro após a declaração de classe.Porque a declaração para NotDeclaredYet tem ainda não foi processado, o formulário de especificador de tipo elaborated é usado: class NotDeclaredYet.Um tipo que foi declarado pode ser especificado em um friend declaração de membro usando um especificador de tipo normal:

// class_member_declaration_syntax2.cpp
// compile with: /c
struct AlreadyDeclared {};

struct HasFriends {
   friend AlreadyDeclared;
};

O especificador puro (mostrado no exemplo a seguir) indica que nenhuma implementação é fornecida para a função virtual que está sendo declarada.Portanto, o especificador puro pode ser especificado somente em funções virtuais.Considere este exemplo:

// class_member_declaration_syntax3.cpp
// compile with: /c
class StrBase {   // Base class for strings.
public:
   virtual int IsLessThan( StrBase& ) = 0;
   virtual int IsEqualTo( StrBase& ) = 0;
   virtual StrBase& CopyOf( StrBase& ) = 0;
};

O código anterior declara uma classe base abstrata — ou seja, uma classe projetada para ser usada somente como a classe base para classes mais específicas.Tais classes base podem impor um determinado protocolo ou conjunto de funcionalidades, declarando um ou mais funções virtuais como "puras" funções virtuais, usando o especificador puro.

Classes que herdam a StrBase classe deve fornecer implementações para as funções virtuais puras; Caso contrário, elas, também, são consideradas classes base abstratas.

Classes base abstratas não podem ser usados para declarar os objetos.Por exemplo, antes que um objeto de um tipo herdado de StrBase pode ser declarado, as funções IsLessThan, IsEqualTo, e CopyOf deve ser implementado.(Para obter mais informações sobre classes base abstratas, consulte Classes abstratas.)

Consulte também

Referência

Membros de classe