栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

类和对象-C++运算符重载

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类和对象-C++运算符重载

运算符重载概念:对已有的运算符重新定义,赋予其另一种功能,以适应不同的数据类型。

一、加号运算符重载

编译器本身掌握了1+1=2、 2+2=4之类的运算(内置数据类型),但当两个自定义的数据类型需要进行相加运算时,编译器不知道怎么处理。

我们当然可以通过函数来实现自定义数据类型的相加

class Person
{
public:
	int m_A;
	int m_B;
};
Person p1;
p1.m_A = 10;
p2.m_B = 10;
Person p2;
p2.m_A = 10;
p2.m_B = 10;

此时想实现两个person中A与B值的和,可以定义一个函数,其返回值为新的person:(其中this指针指向调用该函数的类中的成员变量)

Person PersonAddPerson(Person &p)
{
Person temp;
temp.m_A = this->m_A + p.m_A;
temp.m_B = this->m_B + p.m_B;
return temp;
}

对于相加函数的命名,每个人都各不相同。此时编译器为大家起了通用的名称,为:operator+ 函数的其他内容无需改变。
因此,当我们想使用此函数进行实际加法时:

Person p3 = p1.operator+(p2);

可以简化为

Person p3 = p1 + p2;
二、左移运算符重载

作用:可以输出自定义数据类型

int a = 10;
cout << a << endl;

Person p;
p.m_A = 10;
p.m_B = 10;
cout<< p << endl;

编译器可以对a进行输出,但是不知道p如何输出,需要重载左移运算符类型。通常采用全局函数重载左移运算符(成员函数无法实现cout在左侧)。

ostream & operator<< (ostream &cout , Person &p)
{
	cout<<"m_A = "<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767638.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号