我想确保此方法调用正确。我有三个参数,一个默认为空QString。
double funcApply(double* param, QString expr=NULL);
,电话是
funcApply(param);
在函数体中,我测试第二个参数expr是否为NULL,然后进行累加。这个电话会表现得像预期的那样,还是行为不端?
谢谢和问候。
答案 0 :(得分:2)
这取决于您期望它的行为。
从技术上讲,expr
不会是NULL
,因为它不是指针,但其内容将为空。 (假设你的意思是QString)。
当然,如果您有类似#define QString char*
的内容,那么expr
将为NULL
,但我怀疑您是否拥有该内容。
答案 1 :(得分:0)
我在编译时错误'重新定义默认参数'和'对重载函数的模糊调用'
出于某种原因,一旦给出,您将不被允许重复默认参数。如果头文件中有默认值,例如:
double funcApply(double* param, QString expr=NULL);
实现不得重复,但应该像
double funcApply(double* param, QString expr /*=NULL*/)
{
// do something
}
如果您实际测试expr
的{{1}}参数并执行两项不同的操作,那么使用两个执行这些“不同的事情”的单独函数可能会更好
NULL
并避免此问题。