zoukankan      html  css  js  c++  java
  • c++语言 运算符重载 使用重载运算符实现类的加法运算

    //运算符重载
    //C++提供了许多内置数据类型,如整形、浮点型、字符型等,也提供了相应的运算符(+,-,>,<等),用于进行数据的数学运算和逻辑运算.
    //重载运算符的格式如下:
    
    //函数类型 operator 运算符号 (参数列表)
    //{对运算符的重载处理}
    //使用重载运算符实现类的加法运算
    #include <iostream>
    using namespace std;
    class Man //声明一个Man类
    {
    public:
        Man(int a = 0, int h = 0);
        Man operator +(Man &a); //重载"+"实现相加的功能
        void display(); //显示类中的信息
    private:
        int age;
        int height;
    };
    
    Man::Man(int a, int h)
    {
        age = a;
        height = h;
    }
    void Man::display()
    {
        cout << "age is:" << age << endl;
        cout << "height is:" << height << endl;
    }
    
    Man Man::operator +(Man &a) //定义重载运算符函数
    {
        Man c;
        c.age = a.age + age;
        c.height = a.height + height;
        return c;
    }
    
    int main(int argc, char * argv[])
    {
        Man a(20, 170);
        Man b(30, 180);
        Man c;
        c = a + b; //将两个对象相加,然后赋值给C对象
        a.display();
        b.display();
        c.display();
    
        return 0;
    }
    //有以下几点重载运算符的限制需要读者注意:
    //*C++中不允许用户定义新的运算符,只能对已有的运算符进行重载.
    //*不能改变原有运算符操作数的个数.
    //*不能改变原有运算符的优先级.
    //*不能改变原有运算符的结合性.
    //*不能改变原有运算符的语法结构.
    //对于C++中的大多数运算符来说都是可以进行重载,但是"::", "?", ":"和"."运算符不能被重载.
    //重载运算符的规则如下:
    //*一元操作数可以是不带参数的成员函数,或者是带一个参数的非成员函数.
    //*二元操作数可以是带一个参数的成员函数,或者是带两个参数的非成员函数.
    //*"=","[]","->"和"()"运算符只能定义为成员函数.
    //*"->"运算符的返回值必须是指针类型或者能够使用"->"运算符类型的对象.
    //*重载"++"和"--"运算符时,带一个int类型参数,表示后置运算;不带参数表示前置运算.
  • 相关阅读:
    Mac 快速进入mysql命令行
    Vuex 的使用 State Mutation Getter Action
    Vuex状态管理
    路由模块化
    Vue中路由的嵌套
    Vue路由编程式导航以及hash模式
    Vue动态路由 Get传值
    Vue中的路由 以及默认路由跳转
    Vue非父子组件传值
    父组件主动获取子组件的数据和方法 和 子组件主动获取父组件的数据和方法
  • 原文地址:https://www.cnblogs.com/pythonschool/p/2762502.html
Copyright © 2011-2022 走看看