0

我想确保这个方法调用是正确的。我有三个参数,一个默认为空 QString。

double funcApply(double* param, QString expr=NULL);

电话是

funcApply(param);

在函数体中,我测试第二个参数 expr 是否为 NULL,然后继续进行。此调用会按预期运行还是行为异常?

谢谢并恭祝安康。

4

2 回答 2

2

这取决于您期望它的行为方式。

从技术上讲,expr不会,NULL因为它不是指针,但它的内容将为空。(假设你的意思是QString)。

当然,如果你有类似的东西#define QString char*,那么expr将会是NULL,但我怀疑你有。

于 2012-04-23T14:19:17.403 回答
0

我在编译时出现错误“重新定义默认参数”和“对重载函数的模糊调用”

出于某种原因,一旦给出默认参数,就不允许您重复它。如果您的头文件中有默认值,例如:

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);

并避免这个问题。

于 2012-04-23T16:30:58.103 回答