sta*_*k92 2 c++ header function multiple-definition-error
为什么在头文件中定义类的功能是不好的做法?
让我说我有一个头文件,我在类定义本身定义类的功能,如,
headerfile.hpp
#ifndef _HEADER_FILE_
#define _HEADER_FILE_
class node{
int i;
public:
int nextn(){
......
return i;
}
}
#endif //_HEADER_FILE_
Run Code Online (Sandbox Code Playgroud)
因此在类中定义函数就像这样使函数"内联".所以如果我们在两个.cpp文件中包含这个头文件,它会导致"多重定义错误"吗?定义像这样的函数是不好的做法这在课程定义中?
小智 5
这是一个不好的做法,原因如下:如果你需要更改代码,让我们说在一个简单的setter中添加一个跟踪(它们通常在.h中); 那么你将需要重新编译所有CPP文件#includes更改(以及任何依赖).在我目前的项目中,最多可能损失1小时.如果你以后需要添加另一个跟踪,那么另一个等等你很快就会松动1-2天或者等待编译器工作.
如果您将代码放在CPP中,那么您只需要重新链接,而这只需要几分钟.你的项目今天可能很小,但谁知道几年后.这是一个很好的习惯.
另一个(不太好)的原因是,如果你在代码库中搜索字符串":: MyFonction",你将无法在声明中找到它,因为没有"::"(我们只想要实现).但是一个好的IDE应该使用上下文搜索而不是字符串搜索来找到它.