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;
    
}
相关推荐
暗然而日章5 小时前
C++基础:Stanford CS106L学习笔记 4 容器(关联式容器)
c++·笔记·学习
巨人张6 小时前
C++火柴人跑酷
开发语言·c++
Gomiko7 小时前
C/C++基础(四):运算符
c语言·c++
freedom_1024_8 小时前
【c++】使用友元函数重载运算符
开发语言·c++
zmzb01038 小时前
C++课后习题训练记录Day43
开发语言·c++
赖small强8 小时前
【Linux C/C++开发】 GCC -g 调试参数深度解析与最佳实践
linux·c语言·c++·gdb·-g
CAE虚拟与现实9 小时前
C/C++中“静态链接(Static Linking)” 和 “动态链接(Dynamic Linking)释疑
开发语言·c++·dll·动态链接库·lib库
fpcc9 小时前
C++编程实践——标准库中容器存储目标分析
c++
包饭厅咸鱼9 小时前
PatchCore-----训练,测试,c++部署 工业异常检测框架
开发语言·c++·视觉检测
许长安9 小时前
C++ 多态详解:从静态多态到动态多态
开发语言·c++·经验分享·笔记