【发布时间】:2012-05-07 21:12:13
【问题描述】:
假设我有这个代码。您的基本“如果调用者不提供值,则计算值”场景。
void fun(const char* ptr = NULL)
{
if (ptr==NULL) {
// calculate what ptr value should be
}
// now handle ptr normally
}
并使用任一调用它
fun(); // don't know the value yet, let fun work it out
或
fun(something); // use this value
然而,事实证明,ptr 可以有各种值,包括 NULL,所以我不能使用 NULL 作为调用者不提供 ptr 的信号。
所以我不确定现在应该给 ptr 什么默认值而不是 NULL。我可以使用什么魔法值?有人有想法吗?
【问题讨论】:
-
一个指针应该指向一个有效的对象或者为空——任何其他的都是自找麻烦。也许你想要Boost.Optional?
-
提供
NULL和不提供 ptr 到底有什么区别?函数如何正常“处理”NULL,以及“未提供”ptr 时处理有何不同 -
在我最初的概念中,
fun();和fun(NULL);之间没有区别。因为我不打算使用 NULL。但现在我必须能够做到fun(NULL);并正常处理它。那就是问题所在。编辑了我的问题。
标签: c++ default-arguments