Метод 1:Файл test.h
class X
{
... // some members
void do_some_simple_action();
};
Файл test.cpp
inline void X::do_some_simple_action()
{
...
}
Метод 2:Файл test.h
class X
{
... // some members
void do_some_simple_action() { ... }
};
Метод 3:Файл test.h
class X
{
... // some members
void do_some_simple_action();
};
inline void X::do_some_simple_action()
{
...
}
Из них рабочие это метод 2 и 3... При использовании метода 1 линкер выдал ошибку "unresolved external function".
Вопрос: собственно почему не работает 1ый метод? Если так положено по стандарту, то грамотно ли писать реализацию функции(ий) в теле определения класса? не возникнут ли из-за этого лишние задержки при компиляции?
Или по-другому - как разделают inline функции и не-inline настоящие специалисты работающие с C++ уже более 10 лет??
Просто пишут весь код методов вместе с объявлением класса не заботясь о том что inline, а что нет, отдавая эту задачу компилятору? Если да, то грамотно ли писать программы большая часть кода которой содержится в заголовочных файлах, грамотно ли это?
Или как-то иначе: к примеру inline методы в объявлении, не-inline в cpp?