几乎除C和C++之外的所有语言都不会将标题与实现分开.将函数/方法的实现放在头文件中是否仍然被认为是一种不好的做法,因此您不需要将两者分开?
例:
// File: myUtilLib.hpp
void myFunc1() {
doSomething...
}
void myFunc2() {
doSomething else...
}
Run Code Online (Sandbox Code Playgroud)
而是必须在单独的.cpp文件中复制/粘贴所有声明?
仅标题库不被视为"坏"练习或"好"练习,它们是作为作者必须考虑其优缺点的设计决策.多个库确实使用仅限标头的方法,并且它们在业界广泛使用,例如Boost.
这是通过在函数定义之前写入inline(或constexpr隐式内联)关键字以覆盖单定义规则来完成的,该规则指出由于链接器错误,两个文件在编译期间不能包含相同的符号.尽管inline关键字实际上并不强制内联,但这会导致"过度内联" .类和它们的方法也是隐式内联的(如果你在头文件中定义它们),所以不必将关键字放在那些上.
标题方法有明显的缺点,最明显的是编译时间的增加以及运行代码的多个定义.然而,最简单的专业是你可以只是把标题放在一边,它会更容易为你和可能的用户设置.这是一个你必须自己承担的设计决定.
但请注意,有些情况下,仅标题方法是唯一的方法,这与模板化代码有关.没有为C++,最终得到提案模块,有望使构建系统那么痛苦.然而,它尚未被完全接受,但在重要性方面似乎取得了很大进展.
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |