170 похожих чатов

Подскажите, а чем было обусловлено в С++ хранение таблицы виртуальных

функций в каждом объекте класса вместо хранения в качестве статичного поля класса?

19 ответов

13 просмотров

Где ты такое прочитал?

а что означает стат. поле?

Тем что это динамический полиморфизм

Потому что таблица виртуальных функций на каждый объект своя

Это не обусловлено, это не специфицировано

Но тебе нужно вычислить что это за реальный класс, как ты это со статиком сделаешь я хз

Хранится не таблица, а указатель на неё

Faberge-🇷🇺 Автор вопроса
Dmitriy [Отпуск]
Хранится не таблица, а указатель на неё

А если в таблице только одна функция?

Faberge-🇷🇺 Автор вопроса
Anton Kviatkovskii
Это не важно

Но это лишние переходы по памяти, нет?

Faberge 🇷🇺
Но это лишние переходы по памяти, нет?

Да нет, у тебя сама структура с указателями лежит рядом с классом

Faberge 🇷🇺
Но это лишние переходы по памяти, нет?

я как-то показывал реализацию динамического полиморфизма на С, может найдешь это интересным для себя, посмотришь как выглядят потроха https://gist.github.com/anatoly-spb/8fb267941b22d1d408f0f160fdc8a8d9#file-stream-h

Faberge-🇷🇺 Автор вопроса
Anatoly Shirokov
я как-то показывал реализацию динамического полимо...

Да я вот сам только недавно делал что-то похожее на Си, чтобы для себя разобраться

Faberge 🇷🇺
А как это тогда понимать?

сама таблица для каждого класса уникальна (статична), а вот указатели в объекте могут быть на разные таблицы виртуальных функций, в зависимости от класса, указатель на таблицу виртуальных функций устанавливается при конструировании объекта класса

Faberge 🇷🇺
Ну я так и написал

vptr все равно получается статическим полем

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта