Compartilhar via


Palavras-chave de herança

Específicos do Microsoft

class [__single_inheritance] class-name;
class [__multiple_inheritance] class-name;
class [__virtual_inheritance] class-name;

Onde:

  • nome da classe
    O nome da classe que está sendo declarado.

C++ permite declarar um ponteiro para um membro de classe antes para a definição da classe.Por exemplo:

class S;
int S::*p;

No código acima, p está declarada como um ponteiro para o membro de inteiro da classe s.No entanto, class S ainda não foi definida nesse código; Ele só foi declarado.Quando o compilador encontra tal um ponteiro, ele deve fazer uma representação generalizada do ponteiro.O tamanho da representação depende do modelo de herança especificado.Existem quatro maneiras para especificar um modelo de herança do compilador:

  • No IDE em representação de ponteiro para membro

  • Com a linha de comando usando o /vmg alternar

  • Usando o pointers_to_members pragma

  • Usando as palavras-chave de herança __single_inheritance, __multiple_inheritance, e __virtual_inheritance.Essa técnica controla o modelo de herança em uma base por classe.

    ObservaçãoObservação

    Se você sempre declarar um ponteiro para um membro de uma classe após a definição da classe, você não precisa usar qualquer uma dessas opções.

Declarar um ponteiro para um membro de uma classe antes da definição de classe afeta o tamanho e a velocidade do arquivo executável resultante.Quanto mais complexo a herança usado por uma classe, maior o número de bytes necessários para representar um ponteiro para um membro da classe e quanto maior o código necessário para interpretar o ponteiro.Herança única é menos complexa e herança virtual é mais complexa.

Se o exemplo acima é alterado para:

class __single_inheritance S;
int S::*p;

independentemente das opções de linha de comando ou pragmas, ponteiros para os membros do class S usará a menor representação possível.

ObservaçãoObservação

A mesma declaração de encaminhamento de uma representação de ponteiro para o membro de classe deve ocorrer em cada unidade de conversão que declara ponteiros para os membros dessa classe, e a declaração deve ocorrer antes que os ponteiros para os membros são declarados.

Específicos do Microsoft final

Consulte também

Referência

Palavras-chave C++