我已经遇到了一些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