C++入门(三)(重载)

目录

1.函数重载

 函数重载原理

返回值不同能否构成重载


1.函数重载

函数重载是指在同一个作用域内定义两个或多个函数,它们的函数名相同但参数列表不同,可以是参数类型参数个数参数类型顺序的不同组合。这样做的好处是可以使用同一个函数名来表示不同的操作,提高了代码的可读性和可维护性。

 这里我写了int和double不同类别的加法,可以看到函数名相同,类型不同,编码后可以运行。

int Add(int x, int y)
{
	cout << "intAdd:" << endl;
	return x + y;
}
double Add(double x, double y)
{
	cout << "doubleAdd:" << endl;
	return x + y;
}

057f2dcf2e0c4dc3a5aba864a6eef6c7.png

 其他的大家可以自行去尝试。

注意的是,在同一作用域下这样重载是有效的,不同作用域需要谨慎使用。

函数重载会降低程序运行速度吗?

函数重载不会直接降低程序运行速度,因为编译器会根据不同的函数参数类型或数量自动生成不同的函数名,使得程序在调用函数时能够准确地匹配到对应的函数。但是,如果函数重载过于频繁或者参数类型数量过多,可能会增加代码量和编译时间。对运行没有影响。

 函数重载原理

当程序编译时,编译器会根据函数名和参数类型的不同生成不同的符号名,在调用这些函数时,编译器会根据传入参数的类型和数量选择相应的符号名,并将其作为函数调用指令的操作数,将控制权转移到相应的函数代码。而c语言不具备修饰函数名的功能。具体得到的符号名取决与编译器。

//call(调用) _Z3Addii(0x313131310)

 // call(调用) _Z3Adddd(0x313131320)

可以稍微理解一下。

返回值不同能否构成重载

答案是不可以。这个可以理解成编译器作为执行命令的机器,他不知道你要返回哪个值,而且函数也不是一定具有返回值,看似是编译器不聪明,实则是语法要求。所以是不构成重载的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小C您好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值