类和对象,C++运算符重载,加号运算符重载

C++运算符重载是允许程序员自定义运算符的行为的一种机制。通过重载运算符,可以在类中定义特定的行为,使得类的对象可以使用运算符进行操作。

加号运算符重载是指重载加号运算符(+),使得类的对象可以使用加号运算符进行相加操作。

通过成员函数重载加号

#include <iostream> //输入输出的头文件
using namespace std;

//#define 宏常量
#define Day 7
//const修饰的变量也为常量
//int addd(int a,int b);//函数的声明

//空指针调用成员函数
class person
{
public:
    int m_a;
    int m_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;
    }
};
void test01()
{
    person p1;

    p1.m_a=10;
    p1.m_b=10;
    person p2;
    p2.m_a=10;
    p2.m_b=10;
//利用成员函数重载加号,person p3=p1.operator+(p2);可简化为person p3=p1+p2;
    person p3=p1+p2;
    cout<<p3.m_a<<" "<<p3.m_b<<endl;

}
int main()
{
    test01();
    return 0;
}

和通过全局函数重载加号,如下代码所示

#include <iostream> //输入输出的头文件
using namespace std;

//#define 宏常量
#define Day 7
//const修饰的变量也为常量
//int addd(int a,int b);//函数的声明

//空指针调用成员函数
class person
{
public:
    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;

    p1.m_a=10;
    p1.m_b=10;
    person p2;
    p2.m_a=10;
    p2.m_b=10;
//利用全局函数重载加号,person p3=operator+(p1,p2);可简化为person p3=p1+p2;

    person p3=p1+p2;
    cout<<p3.m_a<<" "<<p3.m_b<<endl;

}
int main()
{
    test01();
    return 0;
}

加号重载也可以函数重载

#include <iostream> //输入输出的头文件
using namespace std;

//空指针调用成员函数
class person
{
public:
    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;
}
     //函数重载,全局重载加号也可以函数重载
         person operator+(person &p1,int num)
    {
          person temp;
    temp.m_a=p1.m_a+num;
    temp.m_b=p1.m_b+num;
    return temp;
    }

void test01()
{
    person p1;

    p1.m_a=10;
    p1.m_b=10;
    person p2;
    p2.m_a=10;
    p2.m_b=10;
//利用全局函数重载加号,person p3=operator+(p1,p2);可简化为person p3=p1+p2;

    person p3=p1+p2;
         //成员函数重载加号也可以函数重载调用,此时为参数类型不同
    person p4=p1+4;

    cout<<p3.m_a<<" "<<p3.m_b<<endl;
       cout<<p4.m_a<<" "<<p4.m_b<<endl;

}
int main()
{
    test01();
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值