c++函数重载与运算符重载基础

news/2024/12/5 9:43:45/

什么是重载

重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

重载的作用:重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。

C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载算符 重载。

重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但 是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参 数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为 重载决策

函数重载

重载:重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。

#include <iostream>
#include <string>using namespace std;class Dog
{public:string name;void getWeight(int weight){cout<<name<<"的体重是:"<<weight<<"KG"<<endl;}void getWeight(double weight){cout<<name<<"的体重是:"<<weight<<"KG"<<endl;}};int main(int argc, char const *argv[])
{Dog dog;dog.name = "旺财";dog.getWeight(10);dog.getWeight(10.5);return 0;
}
#include <iostream>
#include <string>using namespace std;class Person
{
public://1.成员函数重载+号Person operator+(Person& p){Person temp;temp.a = this->a + p.a;temp.b = this->b + p.b;return temp;}int a;int b;};int main(int argc, char const *argv[])
{Person p1;p1.a = 10;p1.b = 10;Person p2;p2.a = 20;p2.b = 20;Person p3 = p1 + p2;cout<<"p3.a = "<<p3.a<<endl;cout<<"p3.b = "<<p3.b<<endl;return 0;
}

 

程序执后的结果如下。

通过上面的例子我们可以知道重载函数的使用方法,避免用户传入的参数类型,有可能用 户传入的参数类型不在我们写的重载函数里,假若用户传入了一个字符串类型,这样编译器就 会匹配不到相应的重载函数,编译时就会报错。

运算符重载

运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的 C++多态。目的在 于让人能够用同名的函数来完成不同的基本操作。要重载运算符,需要使用被称为运算符函数 的特殊函数形式,运算符函数形式:operator  p(argument-list),operator 后面的'p'为要重载的运 算符符号。重载运算符的格式如下:

<返回类型说明符> operator <运算符符号>(<参数表>)
{<函数体>
}

下面是可重载的运算符列表:

 下面是不可重载的运算符列表:

 下面的实例使用成员函数演示了运算符重载的概念。在这里,对象作为参数进行传递,对象 的属性使用 this 运算符进行访问。

#include <iostream>
#include <string>using namespace std;class Dog
{
public:int weight;Dog operator+(const Dog &d){Dog dog;dog.weight = this -> weight + d.weight;return dog;}};int main(int argc, char const *argv[])
{Dog dog1;Dog dog2;Dog dog3;dog1.weight = 10;dog2.weight = 20;dog3 = dog1 + dog2;cout<<"第三只狗的体重是: "<<dog3.weight<<endl;return 0;
}

重载“+”运算符,注意函数必须与类名同名,把 Dog 对象作为传递,使用 this 运算符进行访问。然后返回一个 dog 对象。

编译完成后运行的结果如下。

结果可以预知的,重载运算符“+”,可以把两个对象进行相加。在普通的算术运算符“+” 是不能将两个对象进行相加的,所以我们重载运算符的意义可以体现在这里。


http://www.ppmy.cn/news/241218.html

相关文章

一文3000字从0到1用Python做安全测试攻击实战(建议收藏)

在本文中&#xff0c;我们将使用Python进行一次安全测试的实战演练&#xff0c;目标是找出并利用应用程序的安全漏洞。请注意&#xff0c;这个演练仅用于教育和研究目的&#xff0c;切勿将这些技术用于非法活动。 注意&#xff1a;未经授权的攻击是违法的。确保你在拥有明确权…

突破办公瓶颈,推荐5款电脑办公软件

1.AnyTXT AnyTXT是一款搜文件内容的第三方全文搜索工具&#xff0c;速度极快&#xff0c;基本秒出结果。而且右边可以直接预览文件&#xff0c;筛选&#xff0c;复制&#xff0c;翻译等功能丰富&#xff0c;完美替代自带的搜索。 2.Groupy 这是用于快速切换窗口的小型精致工…

锐角云主机linux启动盘制作,开启区块链新生态 Rain将助阵锐角云发布会

近日获悉&#xff0c;全球首台基于区块链的电脑——三角形主机&#xff0c;将于韩国时间3月16日于首尔新罗酒店开启发布会&#xff0c;届时&#xff0c;将有韩国巨星Rain、裴佑熙、Dream catcher等助阵现场。 锐角云预热海报 三角形主机是什么&#xff1f; 三角形主机是由锐角云…

2020共识纪元 | 锐角云分布式存储区块链峰会即将开启

随着区块链上升为国家上战略&#xff0c;区块链赋能实体将进入全新高度&#xff0c;凭借公开透明、不可篡改、去中心自组织等技术特征&#xff0c;渗透应用场景&#xff0c;重构商业价值信用体系。同时&#xff0c;伴随“信息互联网”到“价值互联网”的发展变革&#xff0c;区…

ARCGIS检查锐角程序

ARCGIS是一款强大的地理信息系统软件&#xff0c;它提供了许多工具和功能&#xff0c;可以帮助用户进行地图制作、数据分析和空间分析等任务。其中&#xff0c;Python是ARCGIS中常用的编程语言之一&#xff0c;可以用来编写各种辅助代码程序。本文将介绍如何使用Python编写一个…

点云数据曲面重建(三角化)

1、介绍 曲面重建算法多种多样&#xff0c;例如泊松曲面重建&#xff0c;基于Delaunay生长法的三维点云曲面重&#xff0c;贪婪投影三角化算法&#xff0c;基于B样条曲线的曲面重建&#xff1b;在此我学习一下无序点云三角化算法&#xff0c;原理为将摄像机扫描的三维点云进行曲…

ArcGIS超级工具SPTOOLS-锐角检查,获得内角并判断是否凸多边形,获得线(面)两个折点方向

1.1 锐角检查 操作视频: https://weibo.com/tv/v/HCNNXhm5F?fid1034:4392479009475111 可以是面、线夹角锐角检查 输出锐角点的位置和角度&#xff08;在属性表中&#xff09;&#xff0c;PID是面或线的主键objectid或FID 1.2 获得内角并判断是否凸多边形 操作视频&#…

锐角云(AAC)发布提振币价六大举措其二,AAC顺势大涨

7月18日&#xff0c;锐角云社群内发布了提振币价六大重要举措其二&#xff0c;一是目前市面上的31000台三角形主机&#xff08;1代&#xff09;将作为锐角云的唯一创世节点&#xff1b;二是对销售Super Network&#xff08;酸奶计划&#xff09;激活码所回收的AAC进行1年期锁仓…