C++笔记——函数重载(function overload)

C++笔记——函数重载(function overload)

概念:

同一个代码中,可以出现n个相同名字的函数

  1. 作用:
    同一个接口,具备不同的表现形式,实现了接口的统一
  2. 原理:
    编译器在编译程序的时候,会自动把函数替换成对应版本重载形式
  3. 特点:
  • 函数重载不关心返回值类型,返回值类型不同,其它的都一样(函数名字,参数个数类型),不叫函数重载
  • 函数重载,函数名必须相同
  • 函数重载,参数的个数或者类型至少要有一个是不同的

例子

int add(int a,int b)
double  add(int a,int b) //不是重载,不关心返回值类型
void add(int a,int b);     //不是重载,不关心返回值类型
int add(int c,int d)       不是重载
int myadd(int a,int b)   //不是重载,名字不同
double add(double a,int b)  //是重载
double add(int a,double b)  //是重载 
double add(double a,double b)
double add(double a,double b,double c);   //是重载,个数不同
int add(int a,int b)
{
    
    
	cout<<"第一个版本的add"<<endl;
	return a+b;
}

double add(double a,double b)
{
    
    
	cout<<"第二个版本的add"<<endl;
	return a+b;
}

int main()
{
    
    
	int a=78;
	int b=74;
	double c=45.6;
	double d=52.3;
	float e=85.6;
	//编译器根据实参的类型和个数匹配对应版本的add
	cout<<add(a,b)<<endl; //编译器把这个翻译成  add(int,int)
	cout<<add(c,d)<<endl; //编译器把这个翻译成  add(double,double)
	
	//cout<<add(a,e)<<endl;  //错误,类型不匹配
	//cout<<add(a,b,c)<<endl; //错误,类型和个数都不匹配
}

C++函数重载不关心返回值类型

#include <iostream>
using namespace std;

int add(int a,int b)
{
    
    
	cout<<"第一个版本的add"<<endl;
	return a+b;
}



double add(double a,double b)
{
    
    
	cout<<"第二个版本的add"<<endl;
	return a+b;
}


double add(int a,int b)
{
    
    
	cout<<"第三个版本的add"<<endl;
	return a+b;
}
int main()
{
    
    
	int a=78;
	int b=74;
	double c=45.6;
	double d=52.3;
	float e=85.6;
		
	//编译器根据实参的类型和个数匹配对应版本的add
	cout<<add(a,b)<<endl; //编译器把这个翻译成  add(int,int)
	cout<<add(c,d)<<endl; //编译器把这个翻译成  add(double,double)
	
	//cout<<add(a,e)<<endl;  //错误,类型不匹配
	//cout<<add(a,b,c)<<endl; //错误,类型和个数都不匹配
}

猜你喜欢

转载自blog.csdn.net/weixin_46026429/article/details/108507885
今日推荐