[英]c++ default parameters value
我想确保这个方法调用是正确的。 我有三个参数,一个默认为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);
并避免这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.