Поделиться через


/vd (отключение смещений при выполнении конструктора)

Синтаксис

/vdn

Аргументы

0
Подавляет элемент смещений конструктора или деструктора vtordisp. Выберите этот параметр, только если вы уверены, что все конструкторы классов и деструкторы вызывают виртуальные функции практически.

1
Включает создание скрытых элементов конструктора или деструктора vtordisp. Этот выбор используется по умолчанию.

2
Позволяет использовать оператор dynamic_cast для создаваемого объекта. Например, dynamic_cast из виртуального базового класса в производный класс.

/vd2 добавляет поле vtordisp при наличии виртуальной базы с виртуальными функциями. /vd1 должно быть достаточно. Наиболее распространенный случай, когда требуется /vd2 , является то, что единственная виртуальная функция в виртуальной базе является деструктором.

Замечания

Эти параметры применяются только к коду C++, использующего виртуальные базы.

Visual C++ реализует поддержку смещения конструкций C++ в ситуациях, когда используется виртуальное наследование. Перемещение конструкций решает проблему, созданную при создании виртуальной функции, объявленной в виртуальной базе и переопределенной в производном классе, вызывается из конструктора во время построения дополнительного производного класса.

Проблема заключается в том, что виртуальная функция может передавать неправильный this указатель в результате несоответствия между перемещением виртуальных баз класса и перемещениями к производным классам. Это решение обеспечивает единую корректировку перемещения конструкций, называемую полем vtordisp для каждой виртуальной базы класса.

По умолчанию поля vtordisp отображаются всякий раз, когда код определяет определяемые пользователем конструкторы и деструкторы, а также переопределяет виртуальные функции виртуальных баз.

Эти параметры влияют на все исходные файлы. Используйте vtordisp для подавления и повторного включения полей vtordisp на основе класса.

Установка данного параметра компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.

  3. Введите параметр компилятора в поле "Дополнительные параметры ".

Установка данного параметра компилятора программным способом

См. также

Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC