• 运算符重载


    加号运算符重载

    如果想让自定义数据类型 进行+运算,那么就需要重载 + 运算符

    在成员函数 或者 全局函数里 重写一个+运算符的函数

    函数名 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 tmp;                    //需要提供默认的构造函数
        //    tmp.m_A = this->m_A + p.m_A;
        //    tmp.m_B = this->m_B + p.m_B;
        //    return tmp;
        //}
    
        int m_A;
        int m_B;
    };
    
    //全局函数重载+号运算符 二元
    Person operator+(Person& p1, Person& p2)
    {
        Person tmp;
        tmp.m_A = p1.m_A + p2.m_A;
        tmp.m_B = p1.m_B + p2.m_B;
        return tmp;
    }
    //重载+号运算符多版本 即(重载重载+号运算符)
    Person operator+(Person& p1, int a)
    {
        Person tmp;
        tmp.m_A = p1.m_A + a;
        tmp.m_B = p1.m_B + a;
        return tmp;
    }
    void test()
    {
        Person p1(10, 10);
        Person p2(10, 10);
        Person p3 = p1 + p2;    //p1+p2 从什么表达是转变? 成员 p1.operator(p2)  全局 operator(p1,p2)
        cout << "p3.m_A:" << p3.m_A << "p3.m_B:" << p3.m_B << endl;
        Person p4 = p1 + 20;
        cout << "p4.m_A:" << p4.m_A << "p4.m_B:" << p4.m_B << endl;
    
    }
    
    int main()
    {
        test();
        system("Pause");        //阻塞功能
        return EXIT_SUCCESS;    // 返回正常退出
    }

    结果:

  • 相关阅读:
    CentOS 6.5 zabbix 3.0.4 乱码问题
    CentOS-6.5安装zabbix 3.0.4
    NFS工作原理及配置文件详解
    CentOS-6.5-NFS部署
    Swift中简单的单例设计
    UITableViewCell实现3D缩放动画
    Swift
    Swift
    [转]Swift编程风格指南
    pch文件出现no such file or directory错误
  • 原文地址:https://www.cnblogs.com/yifengs/p/15171843.html
Copyright © 2020-2023  润新知