c++运算符重载

运算符重载

前言:该文章是作者学习C++过程中学习的知识点,希望通过记笔记的方式来激励自己的学习。如有冒犯,大佬勿喷。

运算符重载的基本概念

运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。运算符重载不能改变本来寓意,不能改变基础类型寓意

语法:

定义重载的运算符就像定义函数,只是该函数的名字是operator#,这里的#代表了被重载的运算符。函数的参数中参数个数取决于两个因素。

  • 运算符是一元(一个参数)的还是二元(两个参数);

  • 运算符被定义为全局函数(对于一元是一个参数,对于二元是两个参数)还是成员函数(对于一元没有参数,对于二元是一个参数-此时该类的对象用作左耳参数)

一个简单的案例

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
​
class Person
{
public:
    Person() {};
    Person(int a, int b):m_A(a),m_B(b)
    {};
    //利用成员函数实现加号运算符重载
    Person operator+(Person &p) 
    {
        Person temp;
        temp.m_A = this->m_A + p.m_A;
        temp.m_B = this->m_B + p.m_B;
        return temp;
    }
    
    int m_A;
    int m_B;
​
​
};
​
//利用全局函数实现
Person operator+(Person &p1,Person &p2) 
{
    Person temp;
    temp.m_A = p1.m_A + p2.m_A;
    temp.m_B = p1.m_B + p2.m_B;
    return temp;
}
​
​
void test01()
{
    Person p1(10,11);
    Person p2(20,22);
    Person p3 = p1.operator+(p2);
    Person p4 = operator+(p1,p2);
​
    cout << "p3的mA=" << p3.m_A << "\np3的m_B=" << p3.m_B << endl;
    cout << "p4的mA=" << p4.m_A << "\np4的m_B=" << p4.m_B << endl;
​
}
​
​
int main() 
{
    test01();
}
 

结果:

此案例中使用了成员函数与全局函数实现一个简单的+运算符重载,实现了Person对象成员对应量相加。这就实现了+的重载效果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值