Вопросы по теме '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 просмотров
schedule
25.01.2023
Зачем виртуальному наследованию нужна vtable, даже если виртуальные функции не задействованы?
Я прочитал этот вопрос: Проблема с размером объекта наследования виртуального класса C ++ и было интересно, почему виртуальное наследование приводит к дополнительному указателю vtable в классе.
Я нашел здесь статью:...
495 просмотров
schedule
17.06.2023
Схема хранения полиморфных объектов по стандарту C++
Я знаю, что если класс содержит какие-либо виртуальные функции, большинство компиляторов (если не все) добавляют к его объектам указатель vptr. Кто-то добавляет его первым элементом, кто-то последним. Но требует ли стандарт C++ использование vptr и...
112 просмотров
schedule
21.01.2023