C++函数的重载

本文详细介绍了函数重载的概念,强调了函数签名在选择合适重载函数时的重要性。通过实例展示了如何使用不同参数类型,包括引用类型,来实现函数重载。同时,解释了lvalue和rvalue引用在重载选择中的作用,以及何时应考虑重载函数。最后,探讨了函数重载的主要目的,即在保持单一函数名的同时,实现对不同操作数的相同操作。
摘要由CSDN通过智能技术生成

函数重载的概念

函数重载允许使用相同的函数名定义多个函数,条件是这些函数的形参列表各不相同。

所有函数都有签名,函数的签名由函数名称和形参列表确定。

程序中所有函数都必须有唯一的签名,否则不能编译程序。

#include <iostream>
#include <iomanip>

int add(int, int);
double add(int, double);
double add(double, int);
double add(double, double);

int main()
{
	std::cout << add(3, 4) << std::endl;
	std::cout << add(3.0, 4) << std::endl;
	std::cout << add(3, 4.0) << std::endl;
	std::cout << add(3.0, 4.0) << std::endl;
}

int add(int a, int b)
{
	return a + b;
}

double add(int a, double b)
{
	return a + b;
}

double add(double a, int b)
{
	return a + b;
}

double add(double a, double b)
{
	return a + b;
}

引用类型和重载选择

重载函数中的形参可以使用引用类型,必须确保编译器能够选择一种合适的重载形式。

一般来说不能重载给定类型type与此类型lvalue引用type&。编译器不能编译以下代码:

void f(int n);
void f(int& n);

当用类型为int的实参调用f(),编译器无法确定应该调用哪个函数,因为这两个函数都使用。

编译器能够区分以下原型的重载函数

void f(int& n);    //lvalue引用参数
void f(int&& n);    //rvalue引用参数

当实参为lvalue时,编译器将始终选择f(int& n)函数。

当实参为rvalue时,编译器将始终选择f(int&& n)函数。

rvalue引用类型形参主要用来处理特定问题,类的定义时,会遇到这些特定问题。


何时重载函数

 函数重载的意图:允许使用单个函数名,以不同的操作数执行相同的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值