[英]Different declaration and definition in c++
我对声明与定义的规则有点模糊。
我在funcs.h中有以下声明:
void sumTotalEnrgyAndClush(Protein &A,Protein &B,double ans[2],double enrgyA[18][18],double enrgyB[18][18]);
请注意,ans [2]在enrgyA和B之前。
在funcs.cpp文件中,定义如下所示:
void sumTotalEnrgyAndClush(Protein &A,Protein &B,double enrgyA[18][18],double enrgyB[18][18],double ans[2])
它编译(通过makefile)并正常工作。
我还注意到,如果我删除声明,编译器似乎管理得很好。
为什么参数顺序的变化不重要? 难道最后3个项目都是指针,所以顺序的差异无关紧要吗?
为什么参数顺序的变化不重要?
订单事情做 。 在C ++中,函数可以重载,因此如果两个或多个函数具有不同的参数(或者,如果它们是成员函数,如果它们在const限定中不同),则它们可以具有相同的名称。
您实际上已经声明了两个sumTotalEnrgyAndClush
函数。 头文件中的声明声明了一个从未定义过的函数,源文件中的声明声明并定义了第二个函数。
如果您尝试使用头文件中声明的函数(例如,通过调用它或获取其地址),您将收到错误,因为未定义该函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.