C++_09_函数重载 - 重写版
函数重载
函数重载概念(Function Overload):
同一个函数名搭配不同(类型和数量)的参数,这就是函数重载
注意:函数名和不同参数搭配时函数的含义不同,重载的函数(函数体)自然是不同的
函数重载判断标准:
1、参数个数不同
2、参数类型不同
3、参数顺序不同
注意:函数返回值不是函数重载的判断标准
重载函数调用标准:
1、传入实参要求唯一性,不能出现一个实参能匹配两个重载函数的状况
2、默认参数和重载参数回合在一起,是否允许完全取决于最终匹配到的函数是否唯一
#include<iostream>
using namespace std;
void fun(int a,int b,int c=0)
{
cout << "这是函数重载1" << endl;
}
void fun(int a,int b)
{
cout << "这是函数重载2" << endl;
}
int main(int argc, char const *argv[])
{
// fun(1,1); //error 会导致函数重载二义性
fun(1,1,1);
return 0;
}
zl@LAPTOP-2ABL2N6V:/mnt/d/VsCode$ ./08-默认参数函数重载
这是函数重载1
zl@LAPTOP-2ABL2N6V:/mnt/d/VsCode$
函数重载和函数指针
函数指针表示函数调用入口地址,通过指针(入口地址)可以执行函数
将重载函数赋值给函数指针的时候,可以通过指针传参个数来匹配相对应的重载函数执行(解决不知道执行哪个重载函数的问题,通过指针传参个数来匹配相对应的重载函数)
int func(int x) // int(int a)
{
return x;
}
int func(int a, int b)
{
return a + b;
}
int func(const char* s)
{
return strlen(s);
}
typedef int(*PFUNC)(int a); // int(int a)
int main()
{
int c = 0;
PFUNC p = func;
函数重载和函数指针在一起
#include <iostream>
using namespace std;
void myfunc(int a)
{
printf("a:%d \n", a);
}
void myfunc(char *p)
{
printf("%s \n", p);
}
void myfunc(int a, int b)
{
printf("a:%d \n", a);
}
void myfunc(char *p1, char *p2)
{
printf("p1:%s ", p1);
printf("p2:%s \n", p2);
}
//函数指针 基础的语法
//1声明一个函数类型
typedef void (myTypeFunc)(int a,int b) ; //int
//myTypeFunc *myfuncp = NULL; //定义一个函数指针 这个指针指向函数的入口地址
//声明一个函数指针类型
typedef void (*myPTypeFunc)(int a,int b) ; //声明了一个指针的数据类型
//myPTypeFunc fp = NULL; //通过 函数指针类型 定义了 一个函数指针 ,
//定义一个函数指针 变量
void (*myVarPFunc)(int a, int b);
//
void main()
{
myPTypeFunc fp; //定义了一个 函数指针 变量
fp = myfunc;
//fp(1);
//myVarPFunc = myfunc;
fp(1, 2);
/*
{
char buf1[] = "aaaaafff";
char buf2[] = "bbbb";
fp(buf1, buf2);
}
*/
cout<<"hello..."<<endl;
system("pause");
return ;
}
分类:
C++_语法基础_重写版
标签:
重心
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现