C++的缺省参数

2024-05-28 1087阅读

缺省参数

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

            前言

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

            https://www.captainbed.cn/f1

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

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

            缺省参数的本质其实是初始化列表,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购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]