Palavras-chave de herança
Específico da Microsoft
class [__single_inheritance] class-name;
class [__multiple_inheritance] class-name;
class [__virtual_inheritance] class-name;
onde,
- nome de classe
O nome da classe que está sendo declarada.
O C++ permite que você declare um ponteiro para um membro de classe antes da definição da classe. Por exemplo:
class S;
int S::*p;
No código acima, p é declarado como um ponteiro para o membro inteiro da classe. S. No entanto, class S ainda não foi definida neste código; ela foi apenas declarada. Quando o compilador encontrar esse ponteiro, ele fará uma representação generalizada do ponteiro. O tamanho de representação depende do modelo de herança especificado. Há quatro maneiras de especificar um modelo de herança para o compilador:
No IDE, em Pointer-to-member representation
Na linha de comando, usando a opção /vmg
Usando o pragma pointers_to_members
Usando as palavras-chave de herança __single_inheritance, __multiple_inheritance e __virtual_inheritance. Essa técnica controla o modelo de herança com base em classes.
Dica
Se você sempre declara um ponteiro para um membro de uma classe depois de defini-la, você não precisa usar qualquer uma dessas opções.
A declaração de 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 complexa a herança usada por uma classe, maior é o número de bytes necessários para representar um ponteiro para um membro da classe e maior é o código necessário interpretar o ponteiro. A herança única é a menos complexa, e a herança virtual é a mais complexa.
Se o exemplo anterior for alterado para:
class __single_inheritance S;
int S::*p;
independentemente das opções de linha de comando ou dos pragmas, os ponteiros para os membros de class S usarão a menor representação possível.
Dica
A mesma declaração de encaminhamento de uma representação de ponteiro para membro de classe deve ocorrer em cada unidade de tradução que declarar ponteiros para membros daquela classe, e a declaração deve ocorrer antes que os ponteiros para os membros sejam declarados.
FIM de Específico da Microsoft