C++支持函数重载,而C语言却不支持,原来是这个原因!

本文探讨了C++支持函数重载而C语言不支持的原因,关键在于函数名修饰。在C++中,编译器会根据函数参数列表的不同对函数名进行修饰,使得同名函数在链接阶段能被正确区分开,从而实现重载。而在C语言中,函数名修饰不包含类型信息,导致无法实现函数重载。同时,介绍了在Linux和Windows环境下,GCC与VS编译器对函数名的修饰规则,并提到了extern "C"的作用,即在C++中保持C语言的编译规则。
摘要由CSDN通过智能技术生成

1.函数重载的概念

如果你接触过C++,那么一定使用过插入运算符"<<“和提取运算符”>>"吧。这俩个运算符是C和C++位运算符中的左移运算符右移运算符,而C++又把它作为输入输出运算符。允许一个运算符可以用于不同场合,不同的场合就有不同的含义,这就叫做运算符的 “重载”,即重新赋予它新的含义。这其实就是 “一物多用”
在C++中,函数也可以重载。C++允许在同一作用域中用同一函数名定义多个函数,这些函数的参数列表不同,这些同名的函数用来实现不同的功能。这就是函数的重载,即一个函数名多用

实例:分别求俩个int,double及long类型的数据之和。

#include <iostream>
using namespace std;

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

double Add(double x, double y)
{
	return x + y;
}

long Add(long x, long y)
{
	return x + y;
}

int main()
{
	int ret1 = Add(1, 2);
	double ret2 = Add(1.23, 2.34);
	long ret3 = Add(10L, 20L);
	cout << "int: " << ret1 << endl;
	cout << "double: " << ret2 << endl;
	cout << "long: " << ret3 << endl;

	return 0;
}

main函数三次调用Add函数,但每次实参的类型不同。系统会根据实参的类型找到与之匹配的函数,然后调用该函数。

注意: 上述情况只是函数参数列表不同的其中一种表现,函数参数列表不同,总共包括如下三种种情况

  • 参数的个数不同
  • 参数的类型相同
  • 参数的次序不同

函数的函数名相同,函数的参数列表满足以上三种情况中的一种或多种,都可以构成函数的重载。<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值