Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Controla a adição do membro oculto vtordisp deslocamento de construção/destruição. O vtordisppragma é específico do C++.
Sintaxe
#pragma vtordisp([push,] n)
#pragma vtordisp(pop)
#pragma vtordisp()
#pragma vtordisp([push,] {on|off})
Parâmetros
push
Empurra a configuração vtordisp atual na pilha interna do compilador e define a nova configuração vtordisp como n. Se n não for especificado, a configuração vtordisp atual não será alterada.
pop
Remove o registro superior da pilha interna do compilador e restaura a configuração vtordisp para o valor removido.
n
Especifica o novo valor para a configuração vtordisp. Os valores possíveis são 0, 1ou 2, correspondendo às opções /vd0, /vd1e /vd2 compilador. Para obter mais informações, consulte /vd (Desabilitar deslocamentos de construção).
on
Equivalente a #pragma vtordisp(1).
off
Equivalente a #pragma vtordisp(0).
Comentários
O vtordisppragma é aplicável apenas ao código que usa bases virtuais. Se uma classe derivada substituir uma função virtual que herda de uma classe base virtual, e se um construtor ou destruidor para a classe derivada chamar essa função usando um ponteiro para a classe base virtual, o compilador poderá introduzir campos vtordisp ocultos extras em classes com bases virtuais.
O vtordisppragma afeta o layout das classes que o seguem. As opções do compilador /vd0, /vd1e /vd2 especificam o mesmo comportamento para módulos completos. Especificar 0 ou off suprime os membros ocultos vtordisp. Desative vtordisp somente se não houver nenhuma possibilidade de que os construtores e destruidores da classe chamem funções virtuais no objeto apontado pelo ponteiro this.
Especificar 1 ou on, o padrão, habilita os membros ocultos vtordisp onde forem necessários.
Especificar 2 habilita os membros ocultos do vtordisp para todas as bases virtuais com funções virtuais.
#pragma vtordisp(2) pode ser necessário para garantir o correto desempenho de dynamic_cast em um objeto parcialmente construído. Para obter mais informações, consulte Compiler Warning (level 1) C4436.
#pragma vtordisp(), sem argumentos, restaura a configuração vtordisp para sua configuração inicial.
#pragma vtordisp(push, 2)
class GetReal : virtual public VBase { ... };
#pragma vtordisp(pop)