Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Específico da Microsoft
classclass-name
class __single_inheritanceclass-name
class __multiple_inheritanceclass-name
class __virtual_inheritanceclass-name
onde:
class-name
O nome da classe que está sendo declarada.
C++ permite que você declare um ponteiro para um membro da classe antes da definição da classe. Por exemplo:
class S;
int S::*p;
No código acima, p é declarado como um ponteiro para membro inteiro da classe S. No entanto, ainda não foi definido neste código, class S apenas foi declarado. Quando o compilador encontra tal ponteiro, ele deve fazer uma representação generalizada do ponteiro. O tamanho da representação depende do modelo de herança especificado. Há três maneiras de especificar um modelo de herança para o compilador:
Na linha de comando usando o
/vmgswitchUsando o
pointers_to_memberspragmaUsando as palavras-chave
__single_inheritancede herança ,__multiple_inheritancee__virtual_inheritance. Esta técnica controla o modelo de herança por classe.Observação
Se você sempre declarar um ponteiro para um membro de uma classe depois de definir a classe, não precisará usar nenhuma dessas opções.
Se você declarar um ponteiro para um membro da classe antes que a classe seja definida, isso poderá afetar negativamente o tamanho e a velocidade do arquivo executável resultante. Quanto mais complexa for a herança usada por uma classe, maior será 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. A herança única (ou nenhuma) é menos complexa, e a herança virtual é a mais complexa. Os ponteiros para os membros que você declara antes de a classe ser definida sempre usam a representação maior e mais complexa.
Se o exemplo acima for alterado para:
class __single_inheritance S;
int S::*p;
então, não importa as opções de linha de comando ou pragmas que você especificar, os ponteiros para os membros do class S usarão a menor representação possível.
Observação
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 declara ponteiros para membros dessa classe, e a declaração deve ocorrer antes que os ponteiros para membros sejam declarados.
Para compatibilidade com versões anteriores, _single_inheritance, _multiple_inheritance, e _virtual_inheritance são sinónimos de , __multiple_inheritancee __virtual_inheritance a menos que a __single_inheritanceopção /Za do compilador (Desativar extensões de idioma) seja especificada.
END Específico da Microsoft