编程代码:C++的函数重载—源码分享

本文探讨了C++中的函数重载,解释了为何需要函数重载以及编译器如何解决命名冲突和解析调用。通过示例代码展示了如何实现打印函数的重载,并通过反汇编分析了编译器如何处理函数重载。文章还讨论了函数调用匹配规则,以及重载解析的过程。
摘要由CSDN通过智能技术生成

每一种现象背后都隐藏着一种本质,关键是要不要挖掘

前言:

 

函数重载的重要性还不清楚,但是你知道 C++中如何实现函数重载(虽然这篇文章是关于 C++中函数重载的实现,但我想其他语言也是如此)?这可分成以下两个问题

在声明/定义重载函数时如何解决命名冲突?撇开函数重载不谈, using是一种解决命名冲突的方法,还有许多其他方法可以解决命名冲突,在此不再赘述。2、当我们调用一个重载函数时,如何进行解析?也就是说,如何知道调用了哪个函数呢?

所有支持函数重载的语言都必须解决这两个问题!有了这两个问题,我们就可以开始讨论了。这篇论文是这样的:

1.例题介绍了(现象)函数重载(what)。为何函数重载(why)是必需的?编译器如何解决命名冲突?为什么函数重载不考虑返回值类型3、重载函数的调用与凌号匹配情况4、编译器如何解析重载函数调用?依据一组可供选择的函数名称确定最佳匹配函数5、总结

1.介绍实例(现象)

1.什么是函数重载(what)?

“函数重载”是指在同一个范围内,可以有一组具有相同函数名、不同列表参数的函数,这组函数叫做“重载函数”。重负载函数通常用于命名一组具有类似功能的函数,减少了函数名称的数量,避免了名称空间的污染,对程序的可读性有很大的帮助。

When two or more different declarations are specified for a single name in the same scope, that name is said to overloaded.  By extension, two declarations in the same scope that declare the same name but with different types are called overloaded declarations. Only function declarations can be overloaded; object and type declarations cannot be overloaded. ——摘自《ANSI C++ Standard. P290》

看看下面这个例子,体会一下:实现一个打印函数,它可以同时打印 int类型和字符串类型。用 C++,我们可以做到这些:

#include using namespace std; void print(int i) {        cout<<"print a integer :"<

在上述代码的实现中, print (string)或 print (string)都可以根据具体 print ()的参数调用。以上 print (12)将调用 print (int),而 print (" hello world")将调用 print (string),其结果如下所示:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值