C++的缺省参数

05-28 1086阅读

缺省参数

  • 前言
  • 一、缺省参数概念
  • 二、缺省参数分类
    • 位置参数的缺省参数
      • 全缺省参数
      • 半缺省参数
      • 关键字参数的缺省参数
      • 函数指针的缺省参数
        • `lambda`表达式
        • 三、缺省参数的具体代码展示
          • main.cpp

            前言

            推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。

            https://www.captainbed.cn/f1

            C++的缺省参数

            缺省参数是在函数定义时指定的默认值,当调用函数时未提供该参数的值时,将使用缺省值。使用缺省参数可以简化函数调用,提高代码可读性。但需注意,过多使用缺省参数可能导致代码难以理解和维护。

            缺省参数只需要在函数声明的时候使用,定义的时候可以不需要

            缺省参数的本质其实是初始化列表,C++从入门到精通——类的6个默认成员函数之构造函数可以看我的这篇文章中的初始化列表来了解缺省参数的本质。


            一、缺省参数概念

            缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。这种机制允许函数在更广泛的情境下被调用,提高了代码的灵活性和可重用性。

            在许多编程语言中,如Python、Java和C++等,都支持缺省参数的概念。下文将以C++为例,通过在函数定义时为某些参数指定默认值,就可以创建出可以接受可变数量参数的函数。这样,当调用者只提供了部分参数时,函数依然可以正确地执行,而那些没有提供值的参数则会使用默认值。

            这种设计不仅方便了开发者,也使得代码更加易于理解和维护。因为当函数有多个参数时,如果每个参数都必须明确提供,那么调用者就需要记住每个参数的意义和顺序,这无疑增加了出错的概率。而有了缺省参数,即使调用者忘记了某个参数的值,函数也能正常工作,只是使用了预设的默认值而已。

            此外,缺省参数还有助于实现函数的重载。在某些语言中,虽然不直接支持函数重载(即多个同名函数,但参数列表不同),但可以通过结合缺省参数和可变参数来实现类似的效果。这样,就可以根据调用者提供的参数数量和类型,执行不同的函数逻辑。

            ps:关于函数重载,我将在下篇文章详细讲解

            然而,虽然缺省参数带来了很多便利,但使用时也需要谨慎。过多的缺省参数可能导致函数的行为变得难以预测,因为调用者可能不清楚哪些参数使用了默认值,哪些参数是明确提供的。因此,在设计函数时,应该合理地选择哪些参数应该有默认值,哪些参数应该是必须的。

            #include
            using namespace std;
            void Func(int a = 0)
            {
            	cout 
            	Func();     // 没有传参时,使用参数的默认值
            	Func(10);   // 传参时,使用指定的实参
            	return 0;
            }
            
                 cout
                 cout}
              
              // 注意:如果生命与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用哪个缺省值。
              // message 是缺省参数,设定默认值为 "Hello"
                cout 
                cout 
                func(num);
            }
            processNumber(123);  // 输出 123
            processNumber(456, [](int num) { cout  cout  cout 
            		cout 
                // 函数体
            }
            
                callback(num);
            }
            int main() {
                int num = 456;
                processNumber(num, [](int num) { std::cout 
            //	cout 
            //	cout 
            	cout   // message 是缺省参数,设定默认值为 "Hello"
            	cout 
            	cout 
            	func(num);
            }
            int main()
            {
            	//Func();     // 没有传参时,使用参数的默认值
            	//Func(10);   // 传参时,使用指定的实参
            	//Func();
            	/*Func(60);
            	Func(50,100);*/
            	//greet("Alice");  // 输出 "Hello, Alice"
            	//greet("Bob", "Good morning");  // 输出 "Good morning, Bob"
            	processNumber(123);  // 输出 123
            	processNumber(456, [](int num) { cout 

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]