Вопросы по теме 'vptr'

Когда оператор delete() в сборке удаляет указатель vptr?
vptr удаляется при вызове оператора delete(). Но указатель vptr скрыт, и нам не нужно заботиться о его структуре памяти (плюс у каждого компилятора своя система работы). Я хотел бы знать, когда именно vptr в объекте, который я только что сделал,...
792 просмотров
schedule 31.07.2022

Почему vptr не статичен?
Каждый класс, который содержит одну или несколько виртуальных функций, имеет связанную с ним Vtable. Пустой указатель, называемый vptr, указывает на эту vtable. Каждый объект этого класса содержит тот vptr, который указывает на одну и ту же Vtable....
3230 просмотров
schedule 19.04.2022

Понимание вывода, когда виртуальные функции вызываются напрямую с помощью vptr
Я просматривал полученный откуда-то код, чтобы понять, как работают vptr и vtable. Ниже приведен код с выводом class Base1 { virtual void fun1() { cout<< "Base1::fun1()" << endl; } virtual void func1() { cout<< "Base1::func1()"...
145 просмотров
schedule 09.09.2023

C++: как посмотреть содержимое vptr/vtable
Каждый объект C++, имеющий виртуальную функцию, имеет vptr, указывающий на vtable. Как я могу увидеть, что это за vptr и на что он указывает? Я понимаю, что это зависит от компилятора, и он может поместить vptr в любое место в пространстве памяти...
2062 просмотров
schedule 03.05.2022

Количество созданных vptr, если производный класс также имеет виртуальную функцию, которой нет в базовом классе.
class Base { public: virtual void func1() { std::cout<<"Base func1"<<std::endl; } //virtual destructor }; class Derived : public Base { public: virtual void func1() {...
115 просмотров
schedule 15.12.2022

Изменение динамического типа объекта в C++
В следующем вопросе один из ответов предполагал, что динамический тип объекта не может измениться: Когда может измениться динамический тип упомянутого объекта? Однако я слышал, что это неправда от какого-то докладчика на CPPCon или какой-то...
341 просмотров

Зачем виртуальному наследованию нужна vtable, даже если виртуальные функции не задействованы?
Я прочитал этот вопрос: Проблема с размером объекта наследования виртуального класса C ++ и было интересно, почему виртуальное наследование приводит к дополнительному указателю vtable в классе. Я нашел здесь статью:...
495 просмотров

Схема хранения полиморфных объектов по стандарту C++
Я знаю, что если класс содержит какие-либо виртуальные функции, большинство компиляторов (если не все) добавляют к его объектам указатель vptr. Кто-то добавляет его первым элементом, кто-то последним. Но требует ли стандарт C++ использование vptr и...
112 просмотров
schedule 21.01.2023