C++备忘第8课 重载

同一个函数名定义不同函数
函数搭配的参数不同,函数的意义也不同
函数重载是由函数名和参数列表决定的

函数重载至少要满足这些条件
参数个数不同
参数类型不同
参数顺序不同

/*********************************参数不同********************/
#include <stdio.h> 
int func(int x)
{
	return x;
}
int func(int x,int y)
{
	return x+y;
}
int main()   //两个函数参数个数不同  
{
	printf("%d\n",func(1));
}

/*将第二个定义参数赋初值编译器就无法识别两个func函数,出现二义性*/
#include <stdio.h> 
int func(int x)
{
	return x;
}
int func(int x,int y=1)
{
	return x+y;
}
int main()  
{
	printf("%d\n",func(1)); //编译器无法区分两个函数的区别
}


/***************************顺序不同************************/
#include <stdio.h> 
int func(int x,char y)
{
	return x;
}
int func(char x,int y)
{
	return x;
}
int main()  
{
	printf("%d\n",func(1,'1')); //  1
	printf("%d\n",func('1',1)); // 49(字符1的十进制)
}

/*************************返回值无法法作为重载的依据**********************/
#include <stdio.h> 
int func(int x,char y)
{
	return x;
}
char func(int x,char y)
{
	return y;
}
int main()  
{
//编译无法通过   两个函数的函数名相同,参数列表相同,返回值无法作为重载的依据
}

1.无法通过函数名直接获取函数的入口地址
2.函数重载要发生在同一个作用域
3.将重载函数名赋值给函数指针时 函数类型和函数指针类型要一致(包括返回值 参数列表)

/*
 *将重载函数名赋值给函数指针时   函数类型和函数指针类型要一致(包括返回值   参数列表) 
 */
#include <stdio.h> 
typedef int(*PFUNC)(int x); //int(int)

int func(int x)    //int(int,int)
{
	return x;
}
int main()
{
	PFUNC p =func;
	printf("%d",p(1));	
}


/*****参数列表相同,返回值不同************/
#include <stdio.h> 

typedef int(*PFUNC)(int x);  //int(int)

char func(int x)   //char(int)
{
	return x;
}
int main()
{
	PFUNC p =func;//错误  重载函数和指针参数列表相同,返回值不同
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值