C++中函数的默认参数用法指南

默认参数是函数声明中提供的值, 如果函数的调用者未提供具有默认值的参数值, 则该值由编译器自动分配。
以下是一个简单的C ++示例, 以演示默认参数的用法。我们不必编写3个求和函数, 只需将第3个和第4个参数使用默认值即可使用一个函数。

#include< iostream> using namespace std; // A function with default arguments, it can be called with // 2 arguments or 3 arguments or 4 arguments. int sum( int x, int y, int z=0, int w=0) { return (x + y + z + w); }/* Driver program to test above function*/ int main() { cout < < sum(10, 15) < < endl; cout < < sum(10, 15, 25) < < endl; cout < < sum(10, 15, 25, 30) < < endl; return 0; }

输出如下:
255080

当函数重载与默认值一起完成时。然后, 我们需要确保它不会模棱两可。
如果模棱两可, 编译器将抛出错误。以下是上述程序的修改版本。
#include< iostream> using namespace std; // A function with default arguments, it can be called with // 2 arguments or 3 arguments or 4 arguments. int sum( int x, int y, int z=0, int w=0) { return (x + y + z + w); } int sum( int x, int y, float z=0, float w=0) { return (x + y + z + w); } /* Driver program to test above function*/ int main() { cout < < sum(10, 15) < < endl; cout < < sum(10, 15, 25) < < endl; cout < < sum(10, 15, 25, 30) < < endl; return 0; }

错误:
prog.cpp: In function 'int main()':prog.cpp:17:20: error: call of overloaded 'sum(int, int)' is ambiguouscout < < sum(10, 15) < < endl; ^prog.cpp:6:5: note: candidate: int sum(int, int, int, int) int sum(int x, int y, int z=0, int w=0) ^prog.cpp:10:5: note: candidate: int sum(int, int, float, float) int sum(int x, int y, float z=0, float w=0) ^

关键点:
  • 默认参数与常量参数不同, 因为不能更改常量参数, 而如果需要可以覆盖默认参数。
  • 调用函数为其提供值时, 默认参数将被覆盖。例如, 调用函数sum(10, 15, 25, 30)会将z和w的值分别覆盖为25和30。
  • 在调用函数期间, 从调用函数到被调用函数的参数从左到右复制。因此, sum(10、15、25)会将10、15和25分配给x, y和z。因此, 默认值仅用于w。
  • 将默认值用于函数定义中的参数后, 该参数的所有后续参数都必须具有默认值。也可以说默认参数是从右到左分配的。例如, 以下函数定义无效, 因为默认变量z的后续参数不是默认变量。
// Invalid because z has default value, but w after it // doesn't have default value int sum( int x, int y, int z=0, int w)

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
【C++中函数的默认参数用法指南】被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C ++ STL通过激烈的问题解决过程来训练和掌握这些概念。

    推荐阅读