【发布时间】:2012-11-20 17:56:53
【问题描述】:
我有一个函数Func(string str,int*i=NULL,int*j=NULL,bool ok=false);
我称它为Func(some_string,false);
程序崩溃了..因为我用--调用的顺序错误??
【问题讨论】:
-
是的,你只能在参数列表的末尾省略参数,不能在中间。
-
发布代码,包括调用,以及您所说的“崩溃”的描述。
-
如果这真的编译,它只是用
false初始化i,这显然会以某种方式转换为空指针值。你的功能是否像Func(some_string)一样工作? -
@Angew:确实如此。任何等于零的整数常量表达式都将转换为空指针。
false是整数、常数且等于 0,因此满足所有条件。 -
@MSalters 我不了解 C++03,但在 C++11 [conv.ptr]p1 中:“A 空指针常量 是一个整数常量整数类型 的表达式 (5.19) prvalue,其计算结果为零或 ...”(强调我的)。
bool是整数,但不是整数类型。
标签: c++ function default-value