Partilhar via


vtordisp pragma

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)

Ver também

diretivas Pragma e as palavras-chave __pragma e _Pragma