Я склонен помещать тело меньших функций прямо в заголовочный файл foo.h
, а не в отдельный файл реализации foo.cc
, потому что тогда компилятор всегда может полностью увидеть эти функции и принять решение встроить их.
Пример:
// File "foo.h":
struct Foo {
// ...
int GetCount() const { return count_; }
};
Теперь любой код, который использует Foo
, видит всю реализацию GetCount
и может решить встроить ее.
Это хорошая практика? Если да, то вы помещаете в заголовочный файл чуть более крупные определения функций?