繁体   English   中英

c ++中的不同声明和定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM