c++ - хабр - чисто виртуальные функции с++




встроенная виртуальная функция (2)

В C ++ я понимаю, что виртуальная функция может быть встроенной, но обычно подсказка для inline игнорируется. Кажется, что встроенные виртуальные функции не имеют особого смысла.

Это правильно?

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


Вы можете иметь виртуальные функции как встроенные. Решение сделать встроенный вызов функции принимается не только во время компиляции. Это может быть в любое время между компиляцией и rutime. Вы можете обратиться к этой статье от Херб Саттер. Встроенный Redux


При нормальных обстоятельствах виртуальная функция будет вызываться через указатель на функцию (которая содержится в классе vtable). В этом случае вызов виртуальной функции может быть сгенерирован встроенным только в том случае, если компилятор может статически определить фактический тип, для которого будет вызываться функция, а не только то, что это должен быть класс X или нечто, производное от X.

Основное время, когда встроенная виртуальная функция имеет смысл, - это если у вас критическая ситуация с производительностью и вы знаете, что класс будет часто использоваться таким образом, который позволяет компилятору определять фактический тип статически (и по крайней мере один целевой компилятор оптимизирует вызов через указатель).







c++