c++中函数重在的实现原理
来源:互联网 发布:积分统计软件 编辑:程序博客网 时间:2024/05/22 13:12
1.剖析C++是如何实现重载的?
#include<iostream>
using namespace std;
int Add(int &a, int &b)
{
return a + b;
}
double Add(double &a, double &b)
{
return a + b;
}
int main()
{
int a = 2;
int b = 3;
int c = 0;
double m = 1.20;
double n = 3.21;
double z = 0.00;
c = Add(a, b);
z = Add(m, n);
cout <<"c = "<<c<<endl;
cout <<"z = "<<z<<endl;
}
如上代码是分别求a与b、m与n的和他们的函数名相同可是参数类型都不相同,如果是在C中一定会出错,但是在c++中有函数重载就不会出错,那么究竟是怎么实现函数重载的?函数重载其实是代码在编译期间会对函数进行重命名,函数int Add(int &a, int &b)会被重命名为?Add@@YAHAAHO@Z,而函数double Add(double &a, double &b)则会被重命名为?Add@@YANAANO@Z,可以看出两个函数名虽然相同但是重命名后它们还是有区别的,所以调用函数时不会出错,这就是函数重载。
2.解析面试题:在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
因为在C语言中不支持函数重载,而在c++中支持函数重载。函数在经过被c++编译过后会被重命名,而该名字与被C语言编译过的名字不同。建设某个函数原型为int Add(int &a, int &b),函数被c++编译过后在库中的名字为 ? Add@@YAHAAHO@Z;而函数被C语言编译过后在库中的名字为_Add。所以为了解决名字匹配问题,c++提供了C连接交换指定符号extern "C"。
阅读全文
0 0
- c++中函数重在的实现原理
- thinkphp C函数的实现原理
- C语言中不用宏实现变长参数函数的原理及实现
- C语言中不用宏实现变长参数函数的原理及实现
- C语言中不用宏实现变长参数函数的原理及实现
- 构造HTTP请求Header实现“伪造来源IP”(重在原理)
- c语言中函数调用的原理
- c语言中函数调用的原理
- C++中虚函数的实现原理
- C++中虚函数的实现原理
- C++中虚函数的实现原理
- C++中函数重载的实现原理
- C++中函数重载的实现原理
- c++中函数重载的实现原理
- c语言中-x的实现原理
- C语言中可变参数函数实现原理浅析
- C语言中可变参数函数实现原理浅析
- C语言中可变参数函数实现原理
- applicationContext.xml的基本配置文件
- 通过服务器日志溯源web应用攻击路径
- iOS开发-- 字符串分割(多个字符分割一个字符串)、拼接
- error LNK2026: 模块对于 SAFESEH 映像是不安全的-VS2013
- cogs 1752 [BOI2007]摩基亚Mokia(cdq分治+树状数组)
- c++中函数重在的实现原理
- CCF 1153素数环
- Layered Window 透明窗体的实现总结
- Linux 内存管理浅析
- elasticsearch-翻译完结篇
- [kuangbin带你飞]专题九 连通图 A
- 汉诺塔相关问题及例题
- 查看MySQL数据库版本号的方法
- Python性能优化(一)