是否需要将函数声明放在头文件中并将它们的定义放在源文件中?
Is it needed to put function declarations in header files and their definitions in a source files?
是否需要将函数声明放在头文件中,将它们的定义放在源文件中?这样做是否有任何性能提升,或者可能有任何优势,而不是将声明和定义放在同一个文件中?示例:
在Person.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 文件即可更改定义。如果它在 header 中,那么每个包含 header 的 .cpp 文件也需要重新编译以获得新定义。
运行时性能将完全相同。编译时间可能会有所不同,但这取决于项目的编译方式(编译时间差异是否明显取决于您的项目有多大)。
一般来说,我倾向于将几乎所有的定义都放在一个.cpp 文件中。在我不科学的观点中,我觉得它鼓励单独依赖接口(因为 class 的 "user" 不一定能看到它是如何实现的)。
是否需要将函数声明放在头文件中,将它们的定义放在源文件中?这样做是否有任何性能提升,或者可能有任何优势,而不是将声明和定义放在同一个文件中?示例:
在Person.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 文件即可更改定义。如果它在 header 中,那么每个包含 header 的 .cpp 文件也需要重新编译以获得新定义。
运行时性能将完全相同。编译时间可能会有所不同,但这取决于项目的编译方式(编译时间差异是否明显取决于您的项目有多大)。
一般来说,我倾向于将几乎所有的定义都放在一个.cpp 文件中。在我不科学的观点中,我觉得它鼓励单独依赖接口(因为 class 的 "user" 不一定能看到它是如何实现的)。