C++ 在C+中调用函数+;使用默认参数

C++ 在C+中调用函数+;使用默认参数,c++,function,default-value,C++,Function,Default Value,我有一个函数Func(字符串str,int*I=NULL,int*j=NULL,bool ok=false) 我把它叫做Func(一些字符串,false) 程序正在崩溃。因为我调用的顺序是错误的???如果要为ok指定一个值,还必须为它前面的所有参数指定值。是。第二个参数需要一个int值,而您正在传递一个bool值。第三个和第四个参数分别取null和false。是,您只能在参数列表的末尾省略参数,而不是在中间。张贴代码,包括调用,以及对“崩溃”的含义的描述。如果实际编译,则只需初始化代码< >

我有一个函数
Func(字符串str,int*I=NULL,int*j=NULL,bool ok=false)
我把它叫做
Func(一些字符串,false)


程序正在崩溃。因为我调用的顺序是错误的???

如果要为
ok
指定一个值,还必须为它前面的所有参数指定值。

是。第二个参数需要一个int值,而您正在传递一个bool值。第三个和第四个参数分别取null和false。

是,您只能在参数列表的末尾省略参数,而不是在中间。张贴代码,包括调用,以及对“崩溃”的含义的描述。如果实际编译,则只需初始化代码< > <代码> > <代码> false <代码>。它显然以某种方式转换为空指针值。你调用它的函数是否与
Func(一些字符串)
一样有效?@Angew:确实有效。任何等于零的整型常量表达式都将转换为空指针
false
是整数、常量且等于零,因此它满足所有条件。@M我不知道C++03,但在C++11[conv.ptr]p1中:“空指针常量是一个整数类型的整数常量表达式(5.19)PR值,其计算结果为零或…(我的重点)
bool
是整数,但不是整数类型。