三.函数高级


前言


本文记录本渣渣依据黑马程序员C++课程视频学习C++笔记

本节记录C++中的函数高级部分


3 函数提高

3.1 函数默认参数

C++中函数当形参列表中当形参时可以有默认值
语法:返回值类型 函数名( 参数 = 默认值){函数主体}

  • 形参第一个有默认值参数后的参数,都必须有默认值
    函数默认参数

  • 如果函数声明有默认参数,函数实现不能有默认值,以免重定义,反之亦然函数默认参数重定义
    错误提示 :错误提示

正确写法:
正确写法运行结果:
运行结果

  • 函数默认参数可被实参覆盖
    图示:
    在这里插入图片描述

3.2 函数占位参数

C++中函数当形参列表里可以有占位参数,用来作占位,调用函数时,必须填补该位置

  • 语法: 返回值类型 函数名 (数据类型){函数主体}
    简单代码示例:
#include <iostream>

using namespace std;			

void Func(int) {	
	
	cout << "函数占位参数" << endl;

}

int main() {
			
	Func(10);	
	system("pause");
	return 0;
}
  • 占位参数也可以有默认参数
    简单代码示例:
#include <iostream>

using namespace std;			

void Func(int = 100) {	
	
	cout << "函数占位参数" << endl;

}

int main() {
			
	Func(99);	
	system("pause");
	return 0;
}

3.3 函数重载

3.3.1函数重载概述

函数重载即函数同名

  • 作用:函数名可以相同,提高复用性

函数重载条件:

  • 同一作用域下
  • 函数名相同
  • 函数参数类型不同 或 个数不同 或 定义顺序不同
  • 函数返回值和函数参数名不可作为函数重载的条件

简单代码示例:

#include <iostream>

using namespace std;			

void Function_Overloading(int value) {
	
	cout << "Function_Overloading函数" << endl;

}

void Function_Overloading(double value) { //函数参数类型不同

	cout << "第一个Function_Overloading函数重载" <<endl;

}

void Function_Overloading(int valueA, int valueB) { //函数参数个数不同

	cout << "第二个Function_Overloading函数重载" << endl;

}

void Function_Overloading(int valueA, double valueB) { //函数参数定义顺序不同

	cout << "第三个Function_Overloading函数重载" << endl;

}

void Function_Overloading(double valueA, int valueB) { //函数参数定义顺序不同

	cout << "第四个Function_Overloading函数重载" << endl;

}


int main() {
			
	Function_Overloading(1);
	Function_Overloading(2.1);
	Function_Overloading(3, 4);
	Function_Overloading(3, 4.0);
	Function_Overloading(3.0, 4);

	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述


3.2.2 函数重载注意事项

  • 引用和常引用作为重载条件时,为参数类型不同
    即当有如下代码:
#include <iostream>

using namespace std;			

void Function_Overloading(int& Reference_variableA) {//引用作函数重载条件
	
	cout << "引用作函数重载条件:" << Reference_variableA << endl;
}

void Function_Overloading(const int& Reference_variableA) {//常引用作函数重载条件

	cout << "常引用作函数重载条件:" << Reference_variableA << endl;
}


int main() {
	
	int Value = 100;
	Function_Overloading(Value);	//传入正常变量
	Function_Overloading(10);		//传入常量

	system("pause");
	return 0;
}

运行结果:
引用和常引用作为重载条件

  • 函数重载与函数默认参数
    图示:
    函数重载与函数默认参数
    错误描述
    这样写将造成函数调用不明确,虽然可以通过添加第二个实参来使语法正确,但这也会产生歧义,我们应避免这样当写法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值