Поскольку у вас есть определение Meow
внутри определения класса, Meow
неявно встроено.
inline - подсказка компилятору о замене вызова фактическим содержимым функции. Но это только подсказка - компилятор может проигнорировать подсказку.
Если компилятор придерживается подсказки, каждый вызов будет заменен содержимым функции. Это означает, что компилятор будет генерировать код каждый раз, когда вызывается Meow
вместо генерации вызова функции.
Если компилятор игнорирует подсказку, компилятор / компоновщик организует единую версию, на которую будут направлены все вызовы (поскольку она встроенная, классическая стратегия заключается в том, что каждый модуль перевода, использующий функцию, получит отдельный экземпляр с инструкциями для компоновщика, чтобы сохранить только одну версию).
Наконец, давайте перейдем к объяснениям, где функция не является встроенной. В этом случае кодировщик должен убедиться, что определение присутствует только в одной единице перевода, и все вызовы будут отправлены в эту одну версию.