Compartilhar via


vtordisp

Específico do C++

Controla a adição do membro oculto do deslocamento de construção/destruição vtordisp.

#pragma vtordisp([push,] n)
#pragma vtordisp(pop)
#pragma vtordisp()
#pragma vtordisp([push,] {on | off})

Parâmetros

  • push
    Envia a configuração atual de vtordisp na pilha interna do compilador e define a nova configuração de vtordisp em n. Se n não for especificado, a configuração atual de vtordisp não será alterada.

  • pop
    Remove o registro superior da pilha interna do compilador e restaura a configuração de vtordisp para o valor removido.

  • n
    Especifica o novo valor da configuração de vtordisp. Os valores possíveis são 0, 1 ou 2, correspondente às opções do compilador /vd0, /vd1 e /vd2. 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 pragma vtordisp é aplicável somente ao código que usa bases virtuais. Se uma classe derivada substitui uma função virtual que herda de uma classe base virtual e, se um construtor ou um destruidor para a classe base derivada chamar essa função usando um ponteiro para a classe base virtual, o compilador virtual poderá inserir campos vtordisp adicionais ocultos nas classes com bases virtuais.

O pragma vtordisp afeta o layout das classes que o seguem. As opções /vd0, /vd1 e /vd2 especificam o mesmo comportamento para os módulos concluídos. Especificar 0 ou off elimina os membros vtordisp ocultos. Desative vtordisp somente se não houver nenhuma possibilidade de os construtores e destruidores da classe chamarem funções virtuais no objeto apontado pelo ponteiro this.

Especificar 1 ou on, o padrão, permite que membros vtordisp ocultos onde são necessários.

Especificar 2 habilita os membros vtordisp ocultos para todas as bases virtuais com funções virtuais. Talvez vtordisp(2) seja necessário para garantir o desempenho correto de dynamic_cast em um objeto parcialmente construído. Para obter mais informações, consulte Aviso do compilador (nível 1) C4436.

#pragma vtordisp(), sem argumentos, restaura a configuração de vtordisp como a configuração inicial.

#pragma vtordisp(push, 2)
class GetReal : virtual public VBase { ... };
#pragma vtordisp(pop)

FIM de Específico do C++

Consulte também

Referência

Diretivas Pragma e a palavra-chave __Pragma