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;
    
}
相关推荐
郝学胜_神的一滴6 小时前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
见过夏天21 小时前
C++ 基础入门完全指南
c++
用户805533698032 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
BadBadBad__AK3 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境3 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境3 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴4 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境6 天前
C++ 的Eigen 库全解析
c++
卷无止境6 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴6 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake