栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Visual Studio2017C++学习笔记(十二)-函数默认参数、占位参数、重载

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Visual Studio2017C++学习笔记(十二)-函数默认参数、占位参数、重载

前言

软件为visual studio2017,内容为C++学习笔记,以及相关的问题处理方法,目的是方便回顾和复习。
笔记来自于:黑马程序员C++教程。


一、函数的默认参数 1.语法

在C++中,函数的形参列表中的形参是可以由默认值的。

返回值类型 函数名(参数 = 默认值){}
2.示例
int func1(int a, int b, int c) {
	return a + b + c;
}
int func2(int a, int b = 20, int c = 30) 
{
	return a + b + c;
}
int main() {
	cout << func1(10,20,30) << endl;//60
	cout << func2(10) << endl;//60
	cout << func2(10, 30, 40) << endl;//80,对形参进行赋值。
	
	system("pause");
	return 0;
	}
3.注意事项
1、如果某个参数已经有了默认参数,那么从这个位置往后,从左到右必须有默认值。
2、如果函数声明有默认参数,函数实现就不能有默认参数声明和实现只能有一个默认参数
//注意事项
//1、如果某个参数已经有了默认参数,那么从这个位置往后,从左到右必须有默认值
//错误示例:
//int func3(int a = 10; int b, int c) {}

//2、如果函数声明有默认参数,函数实现就不能有默认参数
//声明和实现只能有一个默认参数
int func4(int a, int b);
//int func4(int a=10,int b=10);声明与实现不能同时有默认参数,不然
int func4(int a = 10, int b = 10) {
	return a + b;
}
二、函数的占位参数 1.定义

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

2.语法
返回值类型 函数名(数据类型){}
3.示例
void funz(int a, int) {
	cout << "this is funz" << endl;
}
//占位参数 还可以有默认参数
void funz1(int a, int = 10) {
	cout << "this is funz1" << endl;
}
int main() {
	funz(10, 10);//占位参数没有默认值,就必须进行填补占位参数
	funz1(10);//有默认参数就可以只传递1个参数
	sytem("pause");
	return 0;
	}
三、函数的重载 1.基本语法
  • 作用
作用:函数名可以相同,提高复用性。
  • 函数重载满足条件
1.同一个作用域下
2.函数名相同
3.两个函数的参数**类型**不同或者**个数不同**或者**顺序不同**才可以。
2.理解
  • 简单的讲,两个函数的作用域相同,名字相同,里面的参数****必须不同才能进行复用,重新载入使用。
3.示例
void funcz01() {
	cout << "funcz01的调用" << endl;
}
void funcz01(int a) {
	cout << "funcz01(int a)的调用" << endl;
}
void funcz01(double a) {
	cout << "funcz01(double a)的调用" << endl;
}
void  funcz01(int a, double b) {
	cout << "funcz01(int a, double b)的调用" << endl;
}

void funcz01(double a,int b) {
	cout << "funcz01(int b, double a)的调用" << endl;
}
函数的返回值不能作为函数的返回条件
//int funcz01(double a, int b) {
//	cout << "funcz01(int b, double a)的调用" << endl;
//}
int main() {
	funcz01();
	funcz01(10);
	funcz01(3.14);
	funcz01(10,5.20);
	funcz01(5.20, 10);
	system(“pause”);
	return 0;
	}
三、函数重载的注意事项 1.引用作为重载的条件
//(1)引用作为重载的条件
void func(int &a) {
	//int &a = 10;不合法,引用必须使用一个合法的内存空间,栈区或者堆区,不能是常量区
	cout << "func(int &a)调用" << endl;
}
void func(const int &a) {
	//const int &a = 10;加上const相当于编译器进行了优化,创建了临时变量temp,
	//int temp = 10; int &a = temp;
	cout << "func(const int &a)调用" << endl;
}
	//(2)函数重载碰到默认参数
void func2(int a, int b = 10) {
	cout << "func2(int a,int b)的调用" << endl;
}

void func2(int a) {
	cout << "func2(int a)的调用" << endl;
}

int main() {
	int a = 10;

	func(10);//输出"func(int &a)调用"
	func(20);//输出"func(const int &a)调用"
	//func2(10);//当函数重载碰到默认参数,出现二义性,报错,尽量避免这样的情况。
	system("pause");
	return 0;
	}
2.小结
  • 引用作为重载条件,要注意加上const可以直接传入常量。
  • 函数重载要尽量避免添加默认参数,涉及到函数重载就不要添加默认参数。

总结

本章主要对函数的默认参数、占位参数、重载进行了说明。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/916994.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号