Первоначальная цель ключевого слова inline
была для оптимизатора подсказкой, что функция / метод предпочтительнее быть кандидатом на встроенную замену .Однако компиляторы могут использовать встроенную подстановку для любой функции, даже если она не помечена как inline
.
. В современных компиляторах inline
менее полезна для оптимизации, но для информирования компилятора о том, чтоОпределение функции (и переменной, начиная с C ++ 17) может встречаться в нескольких единицах перевода, и оно должно рассматривать их как одно и то же определение.(См. встроенный спецификатор )
В любом случае, ключевое слово inline
является спецификатором, используемым компилятором, и фактически не является частью сигнатуры метода, и методы virtual
могут бытьпереопределяется в производных классах до тех пор, пока их сигнатура не изменяется, независимо от того, объявлена ли она как inline
или нет.