Есть структура:
struct tube
{
char var1;
int var2;
char var3;
}
int main()
{
std::cout << sizeof(tube);
}
Она имеет фиксированный размер. Почему когда я добавляю методы к этой структуре:
#include <iostream>
struct tube
{
char var1;
int var2;
char var3;
tube()
{
var1 = 0x00;
var2 = 0x04030201;
var2 = 0x05;
}
void A(){
}
};
int main()
{
std::cout << sizeof(tube);
}
ее размер не меняется? Разве структура внутри себя не хранит указатели, занимающие ее память, на свои методы?
Действительно указателей на методы внутри структуры не хранится.
Каждый метод объявенный внутри структуры по сути (и в ассемблерном коде после компиляции) является функцией, первый аргумент которой -- адрес экземпляра этой структуры.
Код
struct foo
{
int bar;
int baz() { return bar * bar; }
}
По сути эквивалентен
struct foo
{
int bar;
}
int baz(foo *f) { return f->bar * f->bar; }
Невиртуальные методы класса - это просто обычные посторонние функции со скрытым параметром this
. На низком уровне никакого отношения к классу они не имеют и на размер класса никак не влияют.
Почему вы решили, что в классе должны храниться какие-то "указатели" на такие методы - не ясно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Синтаксических ошибок нет, а файл не выводит на консоль
Суть задачи в следующем: нужно получить иконку из окна приложения посредством xlib и поместить её в объект wxIcon (или wxImage или wxBitmap - не важно)Как...
Как сделать переход из одного фрагмента в другой с помощью кнопки на экране?(без TabLayout)Если можно,буду благодарен за код
как создать ImageTextButton, в интернете гораздо меньше информации об этом, чем о простом ImageButton, есть у кого-то пример создания этой кнопочки с текстом?