我想确保这个方法调用是正确的。我有三个参数,一个默认为空 QString。
double funcApply(double* param, QString expr=NULL);
电话是
funcApply(param);
在函数体中,我测试第二个参数 expr 是否为 NULL,然后继续进行。此调用会按预期运行还是行为异常?
谢谢并恭祝安康。
我想确保这个方法调用是正确的。我有三个参数,一个默认为空 QString。
double funcApply(double* param, QString expr=NULL);
电话是
funcApply(param);
在函数体中,我测试第二个参数 expr 是否为 NULL,然后继续进行。此调用会按预期运行还是行为异常?
谢谢并恭祝安康。
这取决于您期望它的行为方式。
从技术上讲,expr
不会,NULL
因为它不是指针,但它的内容将为空。(假设你的意思是QString)。
当然,如果你有类似的东西#define QString char*
,那么expr
将会是NULL
,但我怀疑你有。
我在编译时出现错误“重新定义默认参数”和“对重载函数的模糊调用”
出于某种原因,一旦给出默认参数,就不允许您重复它。如果您的头文件中有默认值,例如:
double funcApply(double* param, QString expr=NULL);
实施不得重复,但应类似于
double funcApply(double* param, QString expr /*=NULL*/)
{
// do something
}
如果您实际测试expr
参数NULL
并执行两件不同的事情,则最好使用两个单独的函数来执行这些“不同的事情”
double funcApply(double* param);
double funcApply(double* param, QString expr);
并避免这个问题。