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
inline
появляется в определении, но не в предыдущем объявлении, и наоборот . Если да, то это может помочь: stackoverflow.com/questions/4924912/…