gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:07 24 4
gpt4 key购买 nike

我对声明与定义的规则有点模糊。

我在 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 项都是指针,所以顺序的差异无关紧要?

最佳答案

Why doesn't the change in the order of the arguments matter?

顺序确实很重要。在 C++ 中,函数可以被重载,因此如果两个或多个函数具有不同的参数(或者,如果它们是成员函数,如果它们的 const 限定不同),它们可以具有相同的名称。

您实际上声明了两个 sumTotalEnrgyAndClush 函数。头文件中的声明声明了一个从未定义的函数,源文件中的声明声明并定义了第二个函数。

如果您尝试使用头文件中声明的函数(例如,通过调用它或获取其地址),您会收到错误消息,因为该函数未定义。

关于c++ - C++中不同的声明和定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3576275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com