首页 > 解决方案 > 是否需要将函数声明放在头文件中并将它们的定义放在源文件中?

问题描述

是否需要将函数声明放在头文件中并将它们的定义放在源文件中?这样做是否有任何性能提升,或者可能有任何优势,而不是将声明和定义放在同一个文件中?例子:

在人.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");
    }
}

标签: c++functionheader-files

解决方案


如果将定义放在 .cpp 文件中,则可以更改定义,而无需重新编译所有其他 .cpp 文件。如果它在头文件中,那么每个包含头文件的 .cpp 文件也需要重新编译以获得新定义。

运行时性能将完全相同。编译时间可能会有所不同,但这取决于项目的编译方式(以及编译时间差异是否明显取决于您的项目有多大)。

一般来说,我倾向于将几乎所有的定义都放在一个 .cpp 文件中。在我不科学的观点中,我觉得它鼓励单独依赖接口(因为类的“用户”不一定能看到它是如何实现的)。


推荐阅读