当前位置: 首页 > news >正文

从C语言开始的C++编程生活(2)

前言

本系列文章承接C语言的学习,需要有C语言的基础才能学会哦~
第2篇主要讲的是有关于C++的缺省参数函数重载
C++才起步,都很简单呢!

目录

前言

缺省参数 

基本语法

缺省参数的作用

函数重载

基本语法

重载的作用


缺省参数 

缺省参数也可以叫做默认参数,是C语言无法实现的一种特殊功能。

基本语法

void Func(int a, int b = 20, int c = 0)
{
    printf("%d", a + b + c);
}

这段代码,声明并且定义了一个Func函数,我们可以发现,其中参数b和参数c都被赋了值。这里的b和c就是缺省(默认)参数。

使用缺省参数的函数有两种
全缺省,所有参数都是缺省参数。
半缺省左边一部分参数是普通参数,剩余的是缺省参数。

!!注意 !!半缺省参数只能统一全部排列在参数列表的右侧,且缺省参数和普通参数不可以交替放置!!

缺省参数的作用

int main()
{
    Func(30);//缺省参数不传参
    Func(1);//缺省参数部分传参 
    Func(1, 2, 30);//全部传参
    return 0;
}

 使用了缺省参数的函数,在传参时,可以有多种选择。
缺省参数全部不传参。此时,这些参数使用声明时定义的默认值(如a = 0, b = 20)。
缺省参数全部传参。此时,所有参数使用传入的值
缺省参数部分传参。此时,传了参的缺省参数使用传入的值其它的使用默认值

!!注意 !!传参只能从左到右按顺序传,不可以跳跃传参。

//!!错误示范!!
//想要第二个参数不传值
Func(1, ,3);//!!是错误的!!

//!!正确示范!!
//想要第二个参数不传值,也就是想第二个参数用默认值
Func(1,20,3);//传入默认值即可

函数重载

概念上,和JAVA的方法重载是一样的。

基本语法

void func()
{
    printf("haha\n");
}
void func(int a)
{
    printf("%d\n",2*a);
}

当两个函数同名而且参数列表不同的时候,这两个函数构成重载

什么是不同的参数列表?
类型不同 or 顺序不同 or 个数不同
其中变量标识符的不同,无法构成重载。

重载的作用

程序根据传入的参数,自行匹配应该传入到哪个函数里。

int main()
{
    func();//没有参数,对应的是上段代码第一段定义的参数列表
    func(2);//有一个参数2,对应的是上段代码第二段定义的参数列表
}

输出结果是:
haha

!!注意 !!全缺省函数和无参数函数不可以构成重构!!

//!!错误 !!
void func()
{
	printf("hhhhhhhh");
}
void func(int a = 0)
{
	printf("xxxxxxxx\n");
}
int main()
{
	func();
}

此时,程序不知道func()是要调用上一段定义还是调用下一段定义,去使用a的默认值。就会发生报错!! 

❤~~本文完结!!感谢观看!!欢迎来我博客做客~~❤


文章转载自:

http://ouMPwfXX.rnjgh.cn
http://6datwOHs.rnjgh.cn
http://W9pOnUrr.rnjgh.cn
http://l9fDemea.rnjgh.cn
http://ZFJMcCcm.rnjgh.cn
http://yotktIVt.rnjgh.cn
http://uLuHTbqj.rnjgh.cn
http://ATdDUNmR.rnjgh.cn
http://t8cgLXaX.rnjgh.cn
http://g4I855gg.rnjgh.cn
http://h5BzyMfm.rnjgh.cn
http://edrgLXbx.rnjgh.cn
http://C1T4jGZU.rnjgh.cn
http://COYRvlAK.rnjgh.cn
http://dlIScgjY.rnjgh.cn
http://iKqvIVsa.rnjgh.cn
http://2uUOOEUf.rnjgh.cn
http://PTUFG2MI.rnjgh.cn
http://RfxhSt0e.rnjgh.cn
http://QkGYMAfA.rnjgh.cn
http://UqH8hUig.rnjgh.cn
http://u5DgIRUR.rnjgh.cn
http://vqxbL885.rnjgh.cn
http://Mwwr72SC.rnjgh.cn
http://8ZKFQiXv.rnjgh.cn
http://ig2kfI22.rnjgh.cn
http://atYVZIMn.rnjgh.cn
http://ThLzkioz.rnjgh.cn
http://g6HnjKBZ.rnjgh.cn
http://FqBbBv72.rnjgh.cn
http://www.dtcms.com/a/89693.html

相关文章:

  • Java基础关键_028_线程(一)
  • 3.24前端模拟面试
  • C语言基础系列【28】指针进阶1:深入理解指针
  • go test相关命令
  • 医院挂号预约小程序|基于微信小程序的医院挂号预约系统设计与实现(源码+数据库+文档)
  • Tomcat相关的面试题
  • T113-S3-启动报错tee_readfdt:433finenode/firmware/opteefailedwith FDT_ERR_NOTFOUND
  • SpringBoot分布式项目中MyBatis实战技巧:从配置到性能优化
  • 3、孪生网络/连体网络(Siamese Network)
  • 将 PDF 转换为 Word — 固定布局 vs 重排布局?
  • 团体协作项目总结Git
  • 23种设计模式-备忘录(Memento)设计模式
  • ubuntu解决蓝牙耳机已连接,但没有声音
  • docker安装flink
  • OpenCV 基础全方位剖析:夯实计算机视觉开发根基
  • Idea中诡异的文件编码问题: 设置fileCodeing为UTF8但不生效
  • R 基础语法
  • 六十天Linux从0到项目搭建(第五天)(file、bash 和 shell 的区别、目录权限、默认权限umask、粘滞位、使用系统自带的包管理工具)
  • 系统思考—看见未来
  • 黄土高原风蚀区解析多源数据融合与机器学习增强路径-RWEQ+集成技术在风蚀模数估算中的全流程增强策略—从数据融合到模型耦合的精细化操作指南
  • 轮回的起点与终点:一场跨越时空的哲学对话
  • netty select/poll/epoll区别
  • 使用vs code终端访问mysql报错解决
  • CAT1模块 EC800M HTTP 使用后续记录
  • 【Hugging Face 开源库】Diffusers 库 ——扩散模型
  • ARM异常处理流程与中断机制总结,与常见丢中断情况
  • Qt事件处理(处理鼠标事件、键盘事件、定时器事件、窗口移动和大小变化事件)
  • Linux学习笔记(应用篇一)
  • 【Unity网络编程知识】使用Socket实现简单TCP通讯
  • deepseek 私有化部署