Share via


/vd (Zakázat posunutí konstrukcí)

Syntaxe

/vdn

Argumenty

0
Potlačí člen posunutí konstruktoru/destruktoru vtordisp. Tuto možnost zvolte pouze v případě, že jste si jisti, že všechny konstruktory třídy a destruktory volají virtuální funkce virtuálně.

1
Umožňuje vytvoření skrytých členů konstruktoru/destruktoru vtordisp. Tato volba je výchozí.

2
Umožňuje použít operátor dynamic_cast na objektu, který je vytvořen. Například dynamic_cast z virtuální základní třídy do odvozené třídy.

/vd2 přidá pole vtordisp, pokud máte virtuální základ s virtuálními funkcemi. /vd1 by měl být dostatečný. Nejběžnějším případem, kdy je nutné /vd2 , je, když jedinou virtuální funkcí ve vaší virtuální bázi je destruktor.

Poznámky

Tyto možnosti platí pouze pro kód jazyka C++, který používá virtuální báze.

Visual C++ implementuje podporu posunutí konstrukce jazyka C++ v situacích, kdy se používá virtuální dědičnost. Posunutí konstrukce řeší problém vytvořený, když virtuální funkce deklarovaná ve virtuální bázi a přepsána v odvozené třídě, je volána z konstruktoru během vytváření další odvozené třídy.

Problémem je, že virtuální funkce může být předán nesprávný this ukazatel v důsledku nesrovnalostí mezi přesuny na virtuální základny třídy a posuny do jeho odvozených tříd. Řešení poskytuje jednu úpravu posunutí konstrukce, označovanou jako pole vtordisp, pro každou virtuální základnu třídy.

Ve výchozím nastavení se pole vtordisp zavádějí vždy, když kód definuje uživatelem definované konstruktory a destruktory a také přepisuje virtuální funkce virtuálních bází.

Tyto možnosti mají vliv na celé zdrojové soubory. Pomocí nástroje vtordisp potlačíte a znovu povolte pole vtordisp na základě třídy podle třídy.

Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.

  2. Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.

  3. Do pole Další možnosti zadejte možnost kompilátoru.

Programové nastavení tohoto parametru kompilátoru

Viz také

Parametry kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC