c++ - 是否需要将函数声明放在头文件中并将它们的定义放在源文件中?
问题描述
是否需要将函数声明放在头文件中并将它们的定义放在源文件中?这样做是否有任何性能提升,或者可能有任何优势,而不是将声明和定义放在同一个文件中?例子:
在人.h
class Person() {
public:
void sayHi();
}
在 Person.cpp 中
#include "Person.h"
#include <cstdio>
void Person::sayHi() {
printf("Hello, world!\n");
}
而不是将它放在一个文件中:
#include <cstdio>
class Person {
void sayHi() {
printf("Hello, world!\n");
}
}
解决方案
如果将定义放在 .cpp 文件中,则可以更改定义,而无需重新编译所有其他 .cpp 文件。如果它在头文件中,那么每个包含头文件的 .cpp 文件也需要重新编译以获得新定义。
运行时性能将完全相同。编译时间可能会有所不同,但这取决于项目的编译方式(以及编译时间差异是否明显取决于您的项目有多大)。
一般来说,我倾向于将几乎所有的定义都放在一个 .cpp 文件中。在我不科学的观点中,我觉得它鼓励单独依赖接口(因为类的“用户”不一定能看到它是如何实现的)。
推荐阅读
- python - selenium.common.exceptions.TimeoutException - 谷歌图像抓取
- android - 具有“或”条件的 WorkManager NetworkType
- javascript - 在php结构中使用来自js的for循环值
- optimization - iOS Core Graphics 如何优化超大图像的增量绘制?
- caching - PWA workbox-4.0.0 maxEntries 限制目前在 NetworkFirst 策略中为 50
- javascript - Lodash _.debounce 在 VueJS 事件中不起作用
- azure-devops - 如何制作仅在链接一侧返回的 Azure DevOps 查询?
- cybersource - Cybersource 工具标识符与支付工具令牌
- java - 是否有一种简单的方法来解释制作对象的 ArrayList 或者 Ready to Program 是否存在问题?
- python - 在 dockerfile 中运行 pip 时如何修复错误?