Не может выходить за рамки B.cpp. Компилятор работает на основе каждой единицы компиляции, то есть он компилирует каждый файл .cpp отдельно, поэтому, если он компилирует C.cpp, у него не будет кода для getA (), и ему потребуется выполнить вызов функции пусть компоновщик исправит это (или, если он действительно взял вас за слово и попытался встроить, у него будет ошибка компоновщика. inline
имеет те же качества, что и static
).
Единственным исключением является LTCG, то есть генерация кода времени соединения, которая доступна на более новых компиляторах.
Один из подходов в этом случае состоит в том, чтобы иметь другой заголовочный файл (иногда называемый * .inl файлами), который содержит встроенный код.
РЕДАКТИРОВАТЬ: Что касается inline является актуальным - это тот, который в определении класса, то есть в файле заголовка. Имейте в виду, что многие компиляторы имеют собственное мнение о том, что можно и нужно указывать. Например, gcc может полностью отключить встраивание (-O0) или встроить все, что считает целесообразным (например, -O3).