为什么C不支持重载,而C++支持重载?

C语言不支持重载,C++可以支持重载。这是什么原因呢?

在编译过程中需要将obj文件进行link,link负责将每一个obj中的符号查找表中的东西转换为一个地址,这个地址就是最后编译完成后的exe文件的函数对应这个函数的入口地址。

一个简单函数:

  int Test();

按C语言方式的命名方式(_cdecl):_Test

按C++方式的命名(_stdcall)  :[email protected]@YAHXZ  

? 和 @@YAH 是用来表示调用协议的, 其中的H为返回值是int

X表示没有参数。

Z是函数名称结束修饰

通过看在编译器转换成的函数名字就可以明白,为什么C++支持重载,因为C++是将参数加入进去的,而C则没有,所以不支持重载。

为什么C不支持重载,而C++支持重载?

时间: 2024-08-21 15:55:38

为什么C不支持重载,而C++支持重载?的相关文章

WebGL 支持检测与已支持浏览器版本汇总

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 是否我的浏览器支持 WebGL http://caniuse.com 在页面搜索 webgl,找到  WebGL - 3D Canvas grap

列出本机JCE提供者,支持消息摘要算法,支持公钥私钥算法

import java.security.Provider; import java.security.Security; public class TestBouncyCastle { public static void main(String[] args) { Provider[] providers = Security.getProviders(); for(Provider p : providers){ System.out.println("提供者名称:"+p.get

Android - 支持不同的设备 - 支持不同的屏幕

Android - 支持不同的设备 - 支持不同的屏幕 Android整体上按照两大类来分类设备屏幕:尺寸和分辨率.app在设备上运行应该考虑大小和分辨率.同样的,你应该包含不同的资源来让app适应不同的屏幕大小和分辨率. 整体上有四种尺寸:小的,正常的,大的,超级大的 和四种分辨率:低分辨率(ldpi),中分辨率(mdpi),高分辨率(hdpi),超高分辨率(xhdpi) 为了声明不同屏幕的不同的布局和突变,你需要把不同的资源放在不同的文件夹下,和处理不同语言的方法一样. 同样要注意到在考虑屏

运行时错误'430': 类不支持自动化或不支持期望的接口。New ADODB.Connection问题

运行时错误'430': 类不支持自动化或不支持期望的接口. 问题: 经调试发现,是运行到下面语句时出错:Set MyConn = New ADODB.Connection  运行到这里是提示本错误 这个MyConn在通用里是这么声明的:    Dim MyConn As ADODB.Connection 你引用 2.8 版的试试. 定位: C:\Program Files \Common Files\Sysem\ADO\msado15.dll   (用2.8解决问题) === nstalling

WordPress 中文URL不支持 Apache Rewrite 不支持中文 Ipage不支持中文

WordPress 站,在国内空间上好好的,只是限制容量... 于是平移到国外Ipage空间上去,但是发现个致命的问题:不支持中文URL!!! http://my.oschina.net/cart/ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request - http://my.oschina.net/cart/</

达思SQL数据库修复软件1.7(支持碎片重组、支持勒索病毒加密的sql数据库修复软件)

达思SQL数据库修复软件(支持碎片重组,支持勒索病毒加密的修复) 详细介绍 达思SQL数据库修复软件 D-Recovery for MS SQL Server 界面 达思SQL数据库修复软件(支持碎片重组,支持勒索病毒加密的修复)检测数据库功能能 一.达思SQL数据库修复软件(支持碎片重组,支持勒索病毒加密的修复)综述 D-Recovery for MS SQL Server达思SQL数据库修复软件是由达思科技自主研发的目前市面上最好用的SQL数据库修复软件之一,支持MS SQL Server全

C++ Primer 学习笔记_27_操作符重载与转换(2)--++/--运算符重载、!运算符重载、赋值运算符重载 、String类([]、 +、 += 运算符重载)、&gt;&gt;和&lt;&lt;运算符重载

C++ Primer 学习笔记_27_操作符重载与转换(2)--++/--运算符重载.!运算符重载.赋值运算符重载 .String类([]. +. += 运算符重载).>>和<<运算符重载 一.++/--运算符重载 1.前置++运算符重载 成员函数的方式重载,原型为: 函数类型 & operator++(); 友元函数的方式重载,原型为: friend 函数类型 & operator++(类类型 &); 2.后置++运算符重载 成员函数的方式重载,原型为:

C++ Primer 学习笔记_58_重载操作符与转换 --重载操作符的定义

重载操作符与转换 --重载操作符的定义 引言: 明智地使用操作符重载可以使类类型的使用像内置类型一样直观! 重载操作符的定义 重载操作符是具有特殊名称的函数:保留字operator后接定义的操作符符号.如: Sales_item operator+(const Sales_item &,const Sales_item &); 除了函数调用操作符之外,重载操作符的形参数目(包括成员函数的隐式this指针)与操作符的操作数数目相同.函数调用操作符可以接受任意数目的操作数. 1.重载的操作符名

go语言笔记——是c开发的 lex yacc进行词法和语法分析,go不支持函数和运算符重载,不支持类型继承,也不支持断言,还有泛型

从 Go 1.0.3 版本开始,不再使用 8g,8l 之类的指令进行程序的构建,取而代之的是统一的 go build 和 go install 等命令,而这些指令会自动调用相关的编译器或链接器. 如果你想获得更深层次的信息,你可以在目录 $GOROOT/src/cmd 下找到编译器和链接器的源代码.Go 语言本身是由 C 语言开发的,而不是 Go 语言(Go 1.5 开始自举).词法分析程序是 GNU bison,语法分析程序是名为 $GOROOT/src/cmd/gc/go.y 的 yacc

Java常见面试题02-方法重写和方法重载的区别?方法重载能改变返回值类型吗?

方法重写和方法重载的区别?方法重载能改变返回值类型吗?       A:Override方法重写和Overload方法重载的区别? Overload是否可以改变返回值类型?可以 方法重写 •  子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖,方法复写. •  使用特点: •   如果方法名不同,就调用对应的方法 •   如果方法名相同,最终使用的是子类自己的 父类方法重写格式:super.父类成员方法名 •  方法重写的注意事项   父类中私有方法不能被重写   子类重写父类方法时,访