【发布时间】:2012-04-30 21:23:36
【问题描述】:
如果我得到了这个函数 fun(t1, t2, t3),并且我用 fun(v1, v2) 调用它,是否有可能获得 v3 的默认值,尽管它尚未指定会是什么是?比如 bool 为 false,pointer 为 null,int 为 0 等。还是应该引发编译器错误?
【问题讨论】:
标签: c++ parameters default-value
如果我得到了这个函数 fun(t1, t2, t3),并且我用 fun(v1, v2) 调用它,是否有可能获得 v3 的默认值,尽管它尚未指定会是什么是?比如 bool 为 false,pointer 为 null,int 为 0 等。还是应该引发编译器错误?
【问题讨论】:
标签: c++ parameters default-value
如果函数没有重载,它会引发编译器错误。
如果你不能改变原型,你可以自己重载它:
void fun (bool t1, bool t2)
{
fun (t1,t2, true); //or whatever
}
或者如果你可以改变它,你可以像这样为参数声明一个默认值:
void fun (bool t1, bool t2, bool t3 = true)
{
}
【讨论】:
这样声明:
void fun (Foo t1, Bar t2, bool t3 = false)
{...}
当您放置一个 = 和一个值时,如果没有提供该参数,则该参数将获得一个默认值。但是,您必须从参数列表的右侧开始使用它们。
【讨论】: