zoukankan      html  css  js  c++  java
  • C++ 运算符重载

    1、运算符重载

    • 对已有的运算符赋予多重的含义
    • 使同一运算符作用于不同类型的数据时产生不同类型的行为

    目的

    • 扩展C++中提供的运算符的适用范围,以用于类所表示的抽象数据类型

    运算符的重载实质是函数重载,类型如下:

    返回值类型 operator 运算符(形参表)
    {
        ...    
    }

    在程序编译时

    • 把含运算符的表达式 -> 对 运算符函数  的调用
    • 把运算符的操作数作为运算符函数的参数
    • 运算符被多次重载时,根据实参的类型决定调用哪个运算符函数
    • 运算符可以被重载成普通函数,也可以被重载成类的成员函数

    运算符重载为普通函数示例:

    #include <iostream>
    
    using namespace std;
    
    class Complex {
    public:
        Complex(double r = 0.0, double i = 0.0) {
            real = r;
            img = i;
        }
    
        double real; // real part
        double img; // imaginary part
    };
    
    Complex operator + (const Complex &a, const Complex &b)
    {
        return Complex(a.real+b.real, a.img+b.img);
    }
    
    int main()
    {
        Complex a(1, 2), b(2, 3), c;
        c = a + b;
        cout << c.real << ":" << c.img << endl;
    }

    这里a+b 就相当于 operator+(a, b);

    重载为普通函数时,参数个数为运算符数目。

    运算符重载为成员函数示例:(重载为成员函数时,参数个数为运算符数目减一)

    #include <iostream>
    
    using namespace std;
    
    class Complex {
    public:
        Complex(double r = 0.0, double i = 0.0) {
            real = r;
            img = i;
        }
        Complex operator+(const Complex &); // addition
        Complex operator-(const Complex &); // subtraction
    
    
        double real; // real part
        double img; // imaginary part
    };
    
    Complex Complex::operator +(const Complex & operand2)
    {
        return Complex(real+operand2.real, img+operand2.img);
    }
    
    Complex Complex::operator -(const Complex & operand2)
    {
        return Complex(real-operand2.real, img-operand2.img);
    }
    
    int main()
    {
        Complex a(1, 2), b(2, 3), c;
        c = a + b;
        cout << c.real << ":" << c.img << endl;
        c = b - a;
        cout << c.real << ":" << c.img << endl;
    }
  • 相关阅读:
    文字预览蒙层组件
    h5按需引入Vant
    uni-app封装网络请求promise
    uniapp去修改vuex中state中的值
    uni-app之vuex(一)
    uni-app配置顶部标题样式
    uni-app组件 信息列表组件
    uni-app之条件编译
    uni-app封装input组件用于登录
    dfs序的应用
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4331136.html
Copyright © 2011-2022 走看看