C++中的重载

本文介绍了C++中的函数重载原理及其在不同参数列表情况下的应用,并详细阐述了如何通过运算符重载来扩展自定义类型的运算功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    函数重载

       在C语言中,函数名代表函数地址,不同的函数必须有不同的函数名,即使是参数表不同但功能相同的函数,这显然与高级程序设计的简约原则不符合。所以在C++中,功能相同的函数可以拥有同样的函数名,这就称之为函数重载。

       函数重载要求函数的参数表不同,即参数类型或者形参个数不同。如:

       void Selection(int *pa, int n);

       void Selection(double *pa, int n);

       可是这些重载的函数如何对应不同的地址呢?C++的方法是是建立一个映射,是函数名和形参表映射到一个新的函数名,这个映射是单一的。两个函数只要形参表有一处不同,对应的新的函数名就不同,让这个新的函数名对应地址。这项工作由C++编译器完成:根据函数名和形参表对函数名进行扩展,形成函数的内部名字,这个内部名称就对应函数地址。

      当然,不同的编译器扩展函数名的方法可能不同,但实质相同。

     

    运算符的重载。

       系统为标准类型数据提供了很多运算度进行相关运算,用户可以直接使用。但是对于一些用户自己定义的类型,则不能直接使用运算符。因此C++引入了运算符重载。运算符重载的思路是:把运算符等价的看作函数,然后通过对该函数的重载,扩大运算符的操作对象,这样的函数称为运算符函数。

       运算符函数名一般为   operator@,@为一种运算符。如operator==.

       如果希望能够判断两个Student类型的变量,则重载运算符函数operator==:

       int  operator== (Student a, Student b)

       {

             return (a.grades == b.grades);

       }

       重载之后,运算符==就增加了结构Student变量。具体执行过程是:编译器如果发现内部无法解释的运算,就会去寻找运算符重载函数,找到之后调用这个函数。所以说,运算符重载就是函数的另一种调用形式。但是,运算符函数的调用并不适用标准类型的数据,如不能把 5 == 6 解释称operator==(5,6)。

      运算符重载还有几个问题要说明:

      1、不能重载的运算符:成员运算符“.”,域解析符"::",成员指针运算符“.*”,条件运算符“ ? :”

      2、不能改变运算符的优先级;不能创建运算符。

      3、运算符重载函数至少有一个形参是用户定义类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值