NB Это не вопрос о том, как использовать встроенные функции или как они работают, а скорее о том, почему они выполняются именно так .
Объявление функции-члена класса не требует определения функции как inline
, это только фактическая реализация функции. Например, в файле заголовка:
struct foo{
void bar(); // no need to define this as inline
}
Итак, почему встроенная реализация функции классов имеет в файле заголовка? Почему я не могу поместить встроенную функцию в файл .cpp
? Если бы я попытался поместить встроенное определение в файл .cpp
, я бы получил сообщение об ошибке в следующих строках:
error LNK2019: unresolved external symbol
"public: void __thiscall foo::bar(void)"
(?bar@foo@@QAEXXZ) referenced in function _main
1>C:\Users\Me\Documents\Visual Studio 2012\Projects\inline\Debug\inline.exe
: fatal error LNK1120: 1 unresolved externals