我已經遇到了一些C++代碼看起來像這樣(簡化爲這個職位):在C++函數頭初始化變量
(這裏是位於someCode.hpp
函數原型)
void someFunction(const double & a, double & b, const double c = 0, const double * d = 0);
(這裏的函數體的第一行位於someCode.cpp
是#include
的someCode.hpp
)
void someFunction(const double & a, double & b, const double c, const double * d);
我可以合法地調用someFunction
使用:
someFunction(*ptr1, *ptr2);
和/或
someFunction(*ptr1, *ptr2, val1, &val2);
其中變量ptr1
,ptr2
,val
,和val2
已經適當定義和val1
和val2
不等於零?爲什麼或者爲什麼不?
如果它是合法的,這個語法首選與重載函數來說明可選參數?
感謝您的回覆並回復鏈接。我不知道這些被稱爲什麼。爲什麼默認參數是'const'是合法的?它們看起來像是'const'意味着它們不能被改變。 – Evan 2011-05-13 09:22:47
@Evan:'const'限定符適用於函數參數,而不是所提供的默認值。默認值的分配發生在函數調用時,就像提供的參數的賦值一樣。如果事情按照你所想的方式工作,那麼用'const'參數多次調用一個函數是非法的。 – Omnifarious 2011-05-13 09:41:26