Сообщение Re[10]: Именование чистых интерфейсов от 04.05.2023 18:49
Изменено 04.05.2023 18:53 night beast
Re[10]: Именование чистых интерфейсов
Здравствуйте, Videoman, Вы писали:
NB>>не все равно.
NB>>будет один IBase. это усложняет работу с поиском нужного метода, появляются доп смещения.
NB>>...
V>Здравый смысл по прежнему отказывается это понимать. Откуда там смещения, если нет данных? По сути речь идет о статической структуре таблиц виртуальных функций, причем только одного объекта — object. Или вы хотите сказать, что указатель на таблицу виртуальных функций и будет являться не явными данными всех классов ?
как только ты добавляешь в класс виртуальную функцию у объекта (экземпляра класса) появляется указатель на таблицу виртуальных функций.
виртуальное наследование к этому добавляет доп. сложностей (сейчас, к сожалению, уже не найду статью с описанием внутренней реализации)
V> Почему компилятор это не оптимизирует, если мне по сути без разницы через что вызывать?
потому что компилятор во время компиляции тайме не знает, какой метод будет вызван
NB>>не все равно.
NB>>будет один IBase. это усложняет работу с поиском нужного метода, появляются доп смещения.
NB>>...
V>Здравый смысл по прежнему отказывается это понимать. Откуда там смещения, если нет данных? По сути речь идет о статической структуре таблиц виртуальных функций, причем только одного объекта — object. Или вы хотите сказать, что указатель на таблицу виртуальных функций и будет являться не явными данными всех классов ?
как только ты добавляешь в класс виртуальную функцию у объекта (экземпляра класса) появляется указатель на таблицу виртуальных функций.
виртуальное наследование к этому добавляет доп. сложностей (сейчас, к сожалению, уже не найду статью с описанием внутренней реализации)
V> Почему компилятор это не оптимизирует, если мне по сути без разницы через что вызывать?
потому что компилятор во время компиляции тайме не знает, какой метод будет вызван
Re[10]: Именование чистых интерфейсов
Здравствуйте, Videoman, Вы писали:
NB>>не все равно.
NB>>будет один IBase. это усложняет работу с поиском нужного метода, появляются доп смещения.
NB>>...
V>Здравый смысл по прежнему отказывается это понимать. Откуда там смещения, если нет данных? По сути речь идет о статической структуре таблиц виртуальных функций, причем только одного объекта — object. Или вы хотите сказать, что указатель на таблицу виртуальных функций и будет являться не явными данными всех классов ?
да. как только ты добавляешь в класс виртуальную функцию у объекта (экземпляра класса) появляется указатель на таблицу виртуальных функций.
виртуальное наследование к этому добавляет доп. сложностей (сейчас, к сожалению, уже не найду статью с описанием внутренней реализации)
V> Почему компилятор это не оптимизирует, если мне по сути без разницы через что вызывать?
потому что компилятор во время компиляции не знает, какой метод будет вызван
NB>>не все равно.
NB>>будет один IBase. это усложняет работу с поиском нужного метода, появляются доп смещения.
NB>>...
V>Здравый смысл по прежнему отказывается это понимать. Откуда там смещения, если нет данных? По сути речь идет о статической структуре таблиц виртуальных функций, причем только одного объекта — object. Или вы хотите сказать, что указатель на таблицу виртуальных функций и будет являться не явными данными всех классов ?
да. как только ты добавляешь в класс виртуальную функцию у объекта (экземпляра класса) появляется указатель на таблицу виртуальных функций.
виртуальное наследование к этому добавляет доп. сложностей (сейчас, к сожалению, уже не найду статью с описанием внутренней реализации)
V> Почему компилятор это не оптимизирует, если мне по сути без разницы через что вызывать?
потому что компилятор во время компиляции не знает, какой метод будет вызван