我倾向于将较小函数的主体放入头文件foo.h
中,而不是放入单独的实现文件foo.cc
中,因为编译器总是可以完全看到这些函数并决定内联它们。
示例:
// File "foo.h":
struct Foo {
// ...
int GetCount() const { return count_; }
};
现在,使用Foo
的任何代码都会看到整个GetCount
实现,并且可以决定内联它。
这是好习惯吗?如果是这样,你是否也将更大的函数定义放入头文件中?
答案 0 :(得分:3)
现代编译器有link time optimization,因此不再需要在标题中提供代码以使函数内联。因此,我认为将声明标记为内联是更好的做法,但将定义放在cpp中。
答案 1 :(得分:0)
这是好习惯,是的。实际上,我认为,对于这种情况,只要您了解行为,您就可以随心所欲地内联您的功能。请注意,编译器将做出关于内联的最终决定。