C++——函数重载
Posted 借我十斤肉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++——函数重载相关的知识,希望对你有一定的参考价值。
文章目录
1 函数重载概述
1、作用:函数名可以相同,提高复用性
2、函数重载满足条件:
- 同一个作用域下(如全局作用域)
- 函数名称相同
- 函数参数 类型不同 或者 个数不同 或者 顺序不同
测试代码
#include <iostream>
using namespace std;
/*-----1、参数类型不同-----*/
//重载函数1.1
void func(int a)
{
cout << "函数func() 的调用,参数类型为int型(参数类型不同)" << endl;
}
//重载函数1.2
void func(double a)
{
cout << "函数func(double a) 的调用,参数类型为double型(参数类型不同)" << endl;
}
/*-----2、参数个数不同-----*/
//重载函数2.1
void func()
{
cout << "\\n函数func() 的调用,无参数(参数个数不同)" << endl;
}
// 重载函数2.2
void func(int a, int b)
{
cout << "函数func(int a, int b) 的调用,有2个参数(参数个数不同)" << endl;
}
/*-----3、参数顺序不同-----*/
// 重载函数3.1
void func(int a, double b)
{
cout << "\\n函数func(int a, double b) 的调用,先int,后double(参数顺序不同)" << endl;
}
// 重载函数3.2
void func(double a, int b)
{
cout << "函数func(double a, int b) 的调用,先double,后int(参数顺序不同)" << endl;
}
int main()
{
//1、参数类型不同
func(10);
func(1.5);
//2、参数个数不同
func();
func(10, 10);
//3、参数顺序不同
func(10, 1.5);
func(1.5, 10);
return 0;
}
输出结果
函数func() 的调用,参数类型为int型(参数类型不同)
函数func(double a) 的调用,参数类型为double型(参数类型不同)
函数func() 的调用,无参数(参数个数不同)
函数func(int a, int b) 的调用,有2个参数(参数个数不同)
函数func(int a, double b) 的调用,先int,后double(参数顺序不同)
函数func(double a, int b) 的调用,先double,后int(参数顺序不同)
注意:函数的返回值不可以作为函数重载的条件
#include <iostream>
using namespace std;
void func(int a)
{
cout << "返回值类型为void" << endl;
}
int func(int a) //报错!无法重载仅按返回值类型区分的函数
{
cout << "返回值类型为int" << endl;
}
int main()
{
func(10);
return 0;
}
2 函数重载的注意事项
测试代码
/*
===函数重载的注意事项===
* 1、引用作为函数重载的条件
* 2、函数重载碰到默认参数
*/
#include <iostream>
using namespace std;
// 1、引用作为函数重载的条件
void func(int &a)
{
cout << "函数func(int &a) 的调用" << endl;
}
void func(const int &a)
{
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()
{
// 1、引用作为函数重载的条件
int a = 10;
const int b = 10;
func(a); //调用的为函数func(int &a),因为a本身是一个变量,可读可写
func(b); //调用的为函数void func(const int &a),因为b本身是一个常量,只读
func(10); //调用的为函数void func(const int &a),const int &a = 字面量,合法
// 2、函数重载碰到默认参数
//func2(10); //出现二义性,报错,尽量避免重载函数中出现默认参数
return 0;
}
输出结果
函数func(int &a) 的调用
函数func(const int &a) 的调用
函数func(const int &a) 的调用
以上是关于C++——函数重载的主要内容,如果未能解决你的问题,请参考以下文章