Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Управляет добавлением скрытого vtordisp элемента смещения и разрушения. Предназначено vtordisppragma для C++.
Синтаксис
#pragma vtordisp([ ]push,n)
#pragma vtordisp(pop)
#pragma vtordisp()
#pragma vtordisp([push,] {on|off})
Параметры
push
Отправляет текущий vtordisp параметр во внутренний стек компилятора и задает для нового vtordisp параметра значение n. Если значение n не указано, текущий vtordisp параметр не изменяется.
pop
Удаляет верхнюю запись из внутреннего стека компилятора и восстанавливает vtordisp параметр в удаленном значении.
n
Задает новое значение для vtordisp параметра. Возможные значения: 0(1или2), соответствующие параметрам компилятора /vd0/vd1и /vd2 параметров компилятора. Дополнительные сведения см. в разделе /vd (Отключение перемещений конструкций)
on
Эквивалент #pragma vtordisp(1).
off
Эквивалент #pragma vtordisp(0).
Замечания
Применимо vtordisppragma только к коду, использующего виртуальные базы. Если производный класс переопределяет виртуальную функцию, наследуемую от виртуального базового класса, и если конструктор или деструктор для производного класса вызывает функцию с помощью указателя на виртуальный базовый класс, компилятор может ввести дополнительные скрытые vtordisp поля в классы с виртуальными базами.
Влияет vtordisppragma на макет классов, которые следуют за ним. Параметры /vd0компилятора /vd1и /vd2 параметров компилятора указывают одинаковое поведение для полных модулей. Указание или 0 подавление off скрытых vtordisp элементов. Отключите только vtordisp в том случае, если конструкторы и деструкторы класса вызывают виртуальные функции объекта, на который указывает this указатель.
Указание или 1, по on умолчанию, включает скрытые vtordisp элементы, где они необходимы.
Указание 2 включает скрытые vtordisp элементы для всех виртуальных баз с виртуальными функциями.
#pragma vtordisp(2) Может потребоваться обеспечить правильную производительность dynamic_cast частично созданного объекта. Дополнительные сведения см. в разделе "Предупреждение компилятора" (уровень 1) C4436.
#pragma vtordisp()без аргументов восстанавливает параметр до начального vtordisp параметра.
#pragma vtordisp(push, 2)
class GetReal : virtual public VBase { ... };
#pragma vtordisp(pop)
См. также
директивы Pragma и ключевые слова __pragma и _Pragma