gpt4 book ai didi

c++ - 不将 header 与实现分开是否仍然被认为是不好的做法?

转载 作者:太空狗 更新时间:2023-10-29 23:36:18 28 4
gpt4 key购买 nike

除了 C 和 C++ 之外,几乎所有语言都没有将 header 与实现分开。将函数/方法的实现放在头文件中,这样您就不需要将两者分开,这仍然被认为是一种不好的做法吗?

例子:

// File: myUtilLib.hpp

void myFunc1() {
doSomething...
}

void myFunc2() {
doSomething else...
}

而不是必须将所有声明复制/粘贴到单独的 .cpp 文件中?

最佳答案

只有 header 的库不被视为“坏”做法或“好”做法,它们是您作为作者必须考虑其优缺点的设计决策。多个库确实使用了 header-only 方法,并且它们在行业中广泛使用,例如 Boost。

这是通过在函数定义之前编写inline(或constexpr,隐式内联)关键字来覆盖声明的单一定义规则来完成的由于链接器错误,两个文件在编译期间不能包含相同的符号。这会导致“过度内联”,尽管 inline 关键字实际上并不强制内联。类及其方法也是隐式内联的(如果您在 header 中定义它们),因此不必将关键字放在它们上面。

只有 header 的方法有明显的缺点,最明显的是编译时间增加以及您有多个运行代码定义这一事实。然而,最简单的专业人士是,您可以直接打开页眉,这样会更容易为您和可能的用户进行设置。这是您必须自己做出的设计决定。

但是请注意,在某些情况下,只有 header 方法是唯一方法,这是关于模板代码的。有一个建议让 C++ 最终得到 modules这有望减轻构建系统的痛苦。然而,它还没有被完全接受,但它的进展似乎在重要性等级上很高。

关于c++ - 不将 header 与实现分开是否仍然被认为是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17800083/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com