/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
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
Введите параметр компилятора в поле "Дополнительные параметры ".
Установка данного параметра компилятора программным способом
- См. раздел AdditionalOptions.
См. также
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC