何时创建仅包含头文件的类

4

我正在学习C++(不是我的选择),遇到了一些没有.cpp文件的类。我被告知类应该在2个文件中实现:头文件(.h)和源文件(.cpp),但似乎并非总是如此。 我的问题是: 何时以及为什么优先在头文件(.h)中实现类方法,而何时不需要?


请注意,头文件中定义的函数可能会被内联。这可能会带来更高的性能,特别是对于某些类型的函数,例如swap(成员和非成员)、移动构造函数、移动赋值运算符、析构函数等。例如,在排序算法的执行时间中,这些函数是否被内联可能会有很大的差异。 - Daniel Langr
是的,性能和效率是大多数开发人员选择C++的主要原因 :)。无论如何,这个问题/问题有许多不同的方面,你绝对不能简单地说“类应该在2个文件中实现”。也许,这是一个很好的起点,但是,在某些情况下,应该采取其他措施。 (另一个例子是已经提到的头文件库,这些库易于使用。) - Daniel Langr
1个回答

2
实现模板类的代码实际上必须放在头文件中(尽管可以参考下面链接中描述的替代方法)。非模板类确实建议按照您所描述的方式进行拆分。
请参见为什么模板只能在头文件中实现?
一些库(仅包含头文件的库)仅由头文件组成,这是一种特殊的设计决策。它们有优点和缺点,请参见https://en.wikipedia.org/wiki/Header-only。我认为这可能不是您所问的,但用户super在此答案的评论中提供的贡献值得一提。

仅包含头文件的库可能是另一个使用案例。 - super
没问题。@super 我会添加的。 - Yunnosch
完全没有问题。请继续。 - super
@super 请检查我是否有误陈述您的贡献。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接