c++什么是函数重载? 函数重载的实现原理是什么?

函数重载

在同一个作用域内,函数名字相同,参数(个数,顺序,类型)不同,那么就是函数重载

cpp 复制代码
void fun(){
  cout<<"没有参数";
}
void fun(int a){  
  cout<<"int";
}
void fun(int a,float b){  
  cout<<"int float";
}

函数重载和返回值没关系

cpp 复制代码
int fun(){
  cout<<"wu";
}
void fun(){            //俩函数没有构成重载
  cout<<"wu";
}

函数重载的实现原理是什么?

编译器通过函数的参数类型、参数个数、参数顺序来区分不同的重载函数,在编译过程中,编译器会根据调用函数的实参类型选择合适的重载函数进行调用

为什么c语言函数名字相同会报错?而c++可以重载?

因为c语言函数名字经过编译之后没有改变,而c++函数名字编译之后会掺杂参数类型

当函数重载和参数默认值一起使用时,要注意二义性问题

cpp 复制代码
#include<iostream>
using namespace std;

void fun(int a,int b=1);
void fun(int a);

int main(){
    fun(0);//此时编译器不知道调用哪个函数
    return 0;
    
}
相关推荐
汉克老师10 小时前
CSP-J 2026 第二轮入门组真题解析(第一题 、旅游)
c++·csp-j·信息学竞赛·小学生学c++
xiaoye-duck10 小时前
《C++ 项目:手写大模型接入 SDK》Gemini接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
UIU11414 小时前
P1481 魔族密码
c++·算法·动态规划
闻缺陷则喜何志丹20 小时前
【C++特性】四种类型转
c++·算法·类型转换
apcipot_rain1 天前
C++转Java日记(02)
java·开发语言·c++
杜 硕1 天前
从零开始的C++生活——第七讲——02
开发语言·c++·生活
Rabitebla1 天前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
西西弗Sisyphus1 天前
C++ 超时互斥锁(Timed Mutex):std::timed_mutex 与 std::unique_lock
c++
今天要早睡_2 天前
C++01_入门基础复习
开发语言·c++
Fuyo_11192 天前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试