Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译器确定参数是否给定或省略_C++_Function_Default Arguments - Fatal编程技术网

C++ 编译器确定参数是否给定或省略

C++ 编译器确定参数是否给定或省略,c++,function,default-arguments,C++,Function,Default Arguments,如何确定/检查函数参数在编译时是否给定或省略 bool a_function(char* b, size_t len=0) { // no run time check such as if (len ...... // just compile time check // ... } 如何实现它?否,无法知道(即使在运行时)是否为函数中带有默认参数的参数指定了参数 您可以应用重载,例如 bool a_function(char* b, size_t l

如何确定/检查函数参数在编译时是否给定或省略

bool a_function(char* b, size_t len=0) {

      // no run time check such as if (len ......
      // just compile time check

      // ...
}

如何实现它?

否,无法知道(即使在运行时)是否为函数中带有默认参数的参数指定了参数

您可以应用重载,例如

bool a_function(char* b, size_t len) {

    // len is specified
    // do something...
}
bool a_function(char* b) {

    // len is not specified
    // do something else...
    // or call a_function with len=0 (the default value) if satisfying the requirement
}

您编写了两个不同的函数…它们总是提供的-调用者使用函数声明中给出的默认值,然后以正常方式调用函数…并且,为了减少可能的代码重复,第二个函数在确定
len
后仍然可以调用第一个函数。是的,默认参数是(大部分/全部?)将这两个函数组合成一个函数的语法糖,特别是在您不关心参数是否为默认参数的情况下。不使用语法糖正是这里所要求的。