2024年C C++最全C++之函数重载_c++函数重载(5),2024年最新项目实践

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

一.函数重载概念

  • 函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些函数的形参列表(参数个数类型或者类型顺序),常用处理实现功能类似数据类型不同的问题。
  • 说通俗一点,函数重载就是,C++中可以存在函数名相同,但是形参类型/个数/类型顺序中的至少一个不同的函数。他们是为了实现功能类似但是参数类型,个数,类型顺序可以不同。
  • 注意:函数重载与返回值无关,也就是函数返回值的类型不同,其它相同并不构成函数重载。还有就是C语言中没有函数重载。下文中堆这两点有解释。

下面举几个函数重载的例子帮助理解:

#include<iostream>
#include<Windows.h>
using namespace std;

int Add(int x, int y){//函数1
	return x + y;
}

double Add(double x, double y){//函数2
	return x + y;
}


int main(){
	int a = 1;
	int b = 2;
	int c = Add(a, b);

	double x = 3.1;
	double y = 4.2;
	double z = Add(x, y);

	cout << c << endl;
	cout << z << endl;

	system("pause");
	return 0;
}

输出:
在这里插入图片描述
上面两个函数,函数1和函数2构成函数重载。在函数调用时,编译器会自动根据函数参数类型的不同调用与之匹配的函数。
但是函数重载与返回值无关:

int Add(short x, short y){
	return x + y;
}
short Add(short x, short y){
	return x + y;
}

此时不够成重载,会有以下报错信息。
在这里插入图片描述

二.C++怎么实现函数重载

  • 为什么C++支持函数重载而C语言不支持函数重载呢?这还要从程序的运行说起,
  • 程序运行要经过4个阶段:预处理,编译,汇编,链接
  • 这里帮助复习一下这四个阶段实现的功能:

预处理:头文件展开,宏替换,去注释和条件编译,形成.i文件
编译:检查语法错误,将c语言转化为汇编语言,形成.s文件
汇编:将汇编语言转化为机器语言。(二进制语言)形成.o目标文件
链接:将目标文件与标准库链接起来,形成.exe可执行文件。

  • 在实际的项目中,可能存在多个源文件和头文件。当在一个源文件中调用一个函数,而这个函数的定义在另一个源文件中时,在编译时不会发生有语法错误,但是在目标文件中,在调用源文件中不会有调用函数的地址,此时要通过链接,到别的目标文件的符号表中找改函数的地址,然后链接到一起。
  • 但是在链接时,链接器会通过什么名字去找呢?
  • 下面是C语言上面函数的符号表中的命名:
    在这里插入图片描述
  • 在c语言中,函数的符号表命名是直接用函数面直接修饰的。

在这里插入图片描述

  • 但是在c++中,windows下函数的命名规则不是直接用函数名直接命名的,并且发现两函数的命名不同

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值