Почему встроенные функции C ++ находятся в заголовке?

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
109
задан mpen 20 August 2019 в 17:22
поделиться