C++之运算符重载的简明了解其原理

本文就加法运算符重载进行讲解,运算符重载的意义:用户可以设置不同类型的运算。

简单的来说,int a = 10; int b = 20;计算int c = a+b;显然c=30;

class Person{

        int money;        /私房钱

};

Person p1;

p1.money = 100;

Person p2;

p2.money = 200;

Person p3;

对于上面的块来说,p1有100块,p2有200块。然后p3说他的钱是他们的总和。

当然p3 = p1 + p2是不可能直接得到p3的钱数,因为编译器不认识这样的类型相加。

// 下面就通过常规的做法来实现

#include <iostream>

using namespace std;

//创建人类

class Person{

public:

       int money;

};

// 常规的做法

Person PersonAdd(const Person p1, const Person p2){

        Person p;

        p.money = p1.money + p.money;

        return p;

}

//测试

void test01(){   

        Person p1;

        p1.money = 100;

        Person p2;

        p2.money = 200;

        Person p3 = PersonAdd(p1, p2);

}

int main(){

        test01();

        system("pause"):

        return 0;

}

// 通过运算符重载实现

#include <iostream>

using namespace std;

//创建人类

class Person{

public:

        // 加法运算符重载实现,将其看作为operator+为函数名的函数

        Person operator+(const Person& p1){

                Person p;

                p.money = this->money + p1->money;

                return p;

        }

       int money;

};

//测试

void test01(){   

        Person p1;

        p1.money = 100;

        Person p2;

        p2.money = 200;

        //Person p3 = p1.operator+(p2);//编译器是这样去调用的

        //可以简化为:

        Person p3 = p1 + p2;

}

int main(){

        test01();

        system("pause"):

        return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值