簡體   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