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

c++学习第四讲---函数提高

1.函数默认参数:

在( )中将参数赋值,如果传值了,则用传入值,否则才用函数中默认参数。

例:

int func(int a, int b = 3, int c = 3)
{return a + b + c;
}
int main()
{cout << func(1, 2) << endl;//6return 0;
}

注:1.如果一个位置有了默认参数,那么之后的所有位置都要有默认参数。

int func(int a = 1, int b, int c = 3)//错误,a有默认参数后,其后参数都应该有默认参数
{return a + b + c;
}

2.声明和实现只能有一个有默认参数。

int func(int a = 1, int b = 2);
int func(int a = 1, int b = 2)//错误,重定义,声明和实现只能有一个有默认参数
{return a + b;
}

2.函数占位参数:

在函数( )中只有数据类型,没有变量名的变量称作函数占位参数。

且占位参数必须有值传入。

void func(int a, int)//int 即为占位参数
{cout << a << endl;
}
int main()
{func(10, 10);//有两个值,后面的传给占位参数return 0;
}

注:1.暂时用不到。
       2.占位参数也可以有默认参数。  (int =10)

3.函数重载

3.1.概念:

函数名称相同,提高复用性。

即根据传入的数据不同调用同名的不同函数。

3.2.满足条件:

(1)在同一个作用域下;

(2)函数名相同;

(3)函数参数类型不同,或者个数不同,或者顺序不同。

注:1.返回值不同不作为函数重载的条件;

       2.参数有无 const 算作不同类型。

例:

void func()
{cout << "func的调用1" << endl;
}
void func(int a)
{cout << "func的调用2" << endl;
}

3.3.注意事项:

1.引用作为重载条件:(有无 const )

void func(int& a)
{cout << "func(int& a)调用" << endl;
}
void func(const int& a)
{cout << "func(const int& a)调用" << endl;
}
int main()
{int a = 10;func(a);//调用(int& a)func(10);//调用(const int& a)return 0;
}

2.函数重载+默认参数:

void func(int a)
{cout << "func(int a)的调用" << endl;
}
void func(int a, int b = 10)
{cout << "func(int a)的调用" << endl;
}
int main()
{func(10);//错误,函数重载两种都可调用return 0;
}

结论:在函数重载中尽量不出现默认参数。

http://www.lryc.cn/news/252240.html

相关文章:

  • 如何使用cpolar+Plex在Windows系统上搭建私人媒体影音站点公网可访问
  • FreeRTOS-软件定时器
  • Lab 3: Recursion, Tree Recursion(CS61A 2020)
  • GVIM 配置 for begin/end class/endclass 等配对
  • 2024不收费的数据恢复软件EasyRecovery16
  • 【每日一题】找出叠涂元素
  • Qt面试题
  • LeetCode:1038. 从二叉搜索树到更大和树(反向中序遍历 C++、Java)
  • 【文末送书】Python OpenCV从入门到精通
  • RabbitMQ 的七种消息传递形式
  • 开源免费跨平台数据同步工具-Syncthing
  • java语言中受检异常和非受检异常的区别是什么?
  • vue3 element-plus el-table表头冻结,表头吸顶
  • mysql中删除数据后,新增数据时id会跳跃,主键自增id不连续
  • todesk连接ubuntu显示当前系统并无桌面环境,或无显示器,无法显示远程桌面,您需要自行安装X11桌面环境,或者使用终端文件功能
  • webpack学习-1.起步
  • GNU Radio 教程
  • Linux 下命令行启动与关闭WebLogic的相关服务
  • 模型量化相关知识汇总
  • yum 操作,出现Cannot retrieve metalink for repository: epel/x86_64
  • MySQL 8.2 Command Line Client闪退
  • 【Geoserver】SLD点位样式(PointSymbolizer)设计全通
  • 大数据基础设施搭建 - 数据装载
  • 医药行业:轻松学会超低温冰箱技能
  • 信息化系列——企业信息化建设(2)
  • php爬虫去抓取京东优惠券代码,事半功倍
  • 电子书制作神器!错过等十年
  • 文献速递:机器学习在超声非破坏性评估中的合成和增强训练数据综述(第二部分)— 合成数据生成方法用于超声波测试
  • gitlab高级功能之mirroring - push mirroring(一)
  • 【PUSDN】WebStorm中报错Switch language version to React JSX