Вопросы по теме 'vptr'
Черта типа для идентификации основного базового класса
Если у меня есть класс Base, по крайней мере, с одной виртуальной функцией и класс Derived, который наследуется отдельно от него, то (uintptr_t)derived - (uintptr_t)static_cast<Base*>(derived) гарантированно (с помощью Itanium ABI) будет равен...
2352 просмотров
schedule
21.05.2023
Как одна виртуальная таблица отслеживает новые виртуальные функции?
Я использую VS 2013 и пытаюсь увидеть, как vptr и vftable работают на уровне объекта. Итак, у меня есть следующие классы:
#include<iostream>
using namespace std;
class baseClass
{
public:
void nonVirtualFunc() {}
virtual void...
259 просмотров
schedule
16.06.2023
vtable: базовый алгоритм
Насколько я понимаю vtables, если у меня есть класс Cat с виртуальной функцией speak() с подклассами Lion и HouseCat, есть vtable, которая сопоставляет говорить() с правильной реализацией для каждого подкласса. Итак, звонок
cat.speak()...
232 просмотров
schedule
10.04.2023
Проблема размера объекта наследования виртуального класса
Здесь, в этом коде, размер ob1 равен 16, что нормально (из-за виртуального указателя), но я не могу понять, почему размер ob2 равен 24.
#include <iostream>
using namespace std;
class A {
int x;
};
class B {
int y, z;
};
class C :...
189 просмотров
schedule
19.12.2022
Почему объект с 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