C/C++函数重载和函数指针的用法

函数重载和函数指针

函数重载:只针对同名函数的形参类型,个数,顺序,不看返回值。

正确重载:

void func(int a);
void func(int a,int b);
void func(float a);
void func(float a,float b);

错误重载(二义性):

void func(int a,int b);
void func(int a,int b, int c=0);// 有默认形参

使用时候:

func(2,4);  // 无法指定是哪个
函数指针

当使用重载函数名对函数指针进行赋值时,根据重载规则挑选与函数指针参数列表一致的候选者,严格匹配候选者的函数类型与函数指针的函数类型

测试样例

#include <iostream>
using namespace std;

//函数重载
void myFunc(char c)
{
	printf("char_c:%c \n", c);
}
void myFunc(int c)
{
	printf("int_c:%d\n", c);
}
void myFunc(int c,int d)
{
	printf("int_c:%d,  int_d:%d\n", c,d);
}
void myFunc(char*c)
{
	printf("char*_c:%s\n", c);
}
void myFunc(char* c,char* d)
{
	printf("char*_c1:%s,  char*_c2:%s\n", c,d);
}
void myFunc(string c)
{
	printf("lenth_of_string_c: %d\n", strlen(c.c_str()));
}


//声明一个函数类别:
typedef void(myTypeFunc)(int a, int b);// 针对void myFunc(int a,int b);

//声明一个函数指针类型:
typedef void(*my_pFunc)(int a, int b);// 针对void myFunc(int a,int b);

//定义一个函数指针变量:
void(*myVarpFunc)(char* a, char* b);

int main()
{
	myTypeFunc* type_funcp = NULL;// 定义一个函数指针
	my_pFunc pfunc = NULL;

	pfunc = myFunc;
	type_funcp = myFunc;

	myVarpFunc = myFunc;

	myFunc(1);
	pfunc(2, 4);
	type_funcp(3, 6);

	{
		char c1[] = "this is char1";
		char c2[] = "this is char2";

		myFunc(string(c1));
		myFunc(c2);
		myVarpFunc(c1, c2);
	}
	printf("\n\n");
	system("pause");
	return 0;
}

输出结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值