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

Черта типа для идентификации основного базового класса
Если у меня есть класс Base, по крайней мере, с одной виртуальной функцией и класс Derived, который наследуется отдельно от него, то (uintptr_t)derived - (uintptr_t)static_cast<Base*>(derived) гарантированно (с помощью Itanium ABI) будет равен...
2352 просмотров

Как одна виртуальная таблица отслеживает новые виртуальные функции?
Я использую VS 2013 и пытаюсь увидеть, как vptr и vftable работают на уровне объекта. Итак, у меня есть следующие классы: #include<iostream> using namespace std; class baseClass { public: void nonVirtualFunc() {} virtual void...
259 просмотров

vtable: базовый алгоритм
Насколько я понимаю vtables, если у меня есть класс Cat с виртуальной функцией speak() с подклассами Lion и HouseCat, есть vtable, которая сопоставляет говорить() с правильной реализацией для каждого подкласса. Итак, звонок cat.speak()...
232 просмотров

Проблема размера объекта наследования виртуального класса
Здесь, в этом коде, размер ob1 равен 16, что нормально (из-за виртуального указателя), но я не могу понять, почему размер ob2 равен 24. #include <iostream> using namespace std; class A { int x; }; class B { int y, z; }; class C :...
189 просмотров

Почему объект с vptr длиннее на 12 байт?
#include <iostream> class B { public: virtual void f() {std::cout<<"HI";} int x; }; class A { public: void f() {std::cout<<"HI";} int x; }; int main () { A a; B b; std::cout<<sizeof(a)<<"...
77 просмотров
schedule 15.01.2023