Некоторые моменты, о «инлайн».
- рядный на виртуальном элементе игнорируется. Это невозможно иметь встроенный виртуальный.
Если компилятор может определить динамический тип объекта во время компиляции, то это, безусловно, можно опустить виртуальный поиск, и либо вызвать функцию непосредственно или раскатать его рядный, если он так хочет.
Рассмотрим следующий код:
базовый класс
{
общественности:
виртуальная пустота SomeFunction ()
{
соиЬ << "В базовой :: SomeFunction" << епсИ;
}
};
класс, производный: общественные базы
{
общественности:
виртуальная пустота SomeFunction ()
{
соиЬ << "В производном :: SomeFunction" << епсИ;
}
};
недействительными F ()
{
полученный д;
d.SomeFunction ();
}
Компилятор может оптимизировать п () так, как он считает нужным. На самом деле, это
мог скомпилировать код, как если бы вы написали:
недействительными F ()
{
соиЬ << "В производном :: SomeFunction" << епсИ;
}
поскольку не наблюдается разница между тем, что и то, что вы написали.
Редактировать:
Незначительное изменение убирать неправильно подобранные метки «список»