Форум - Ответы     (  К темам )
 ?  Andrew: Применение virtual и размер кода (07-04-2003 14:14:33)
ПРиводит ли применение директивы virtual для методов класса к 'заметному' увеличению размера кода и уменьшению скорости вызова такого метода?
Спасибо за внимание.
 Petro (07-04-2003 18:18:27)
Нет.
 Георгий (07-04-2003 19:04:30)
виртуальные методы физически реализуются как указатели на соответствующие функции - увеличение размера структуры на 4 байта для каждой виртуальной функции.

не виртуальные методы физически реализуются как функции - размер структуры (обьекта) не увеличивается

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

вызов не виртуальной функции (метода) реализуется так:
передаётся управление функции-методу (адрес становится известным на этапе компоновки)

итог - на виртуальные функции расход машинного времени и памяти ничтожно мал


support@cbuilder.ru