首页 > 其他 > 详细

运算符的重载

时间:2019-10-27 23:04:46      阅读:112      评论:0      收藏:0      [点我收藏+]

运算符的重载

一.运算符重载为成员函数

对于双目运算符B,如果要重载为类的成员函数,使之实现表达式oprd1 B oprd2.经过重载后该表达式相当于函数调用oprda.operator B(oprd2)。

重载形式和实际调用形式

#include<iostream>
using namespace std;
class Complex {
public:
    Complex(int x = 0, int y = 0) :real(x), imag(y) {}
    Complex operator+(Complex&b);//运算符重载为成员函数
    void show() {
        cout << real << "," << imag << endl;
    }
private:
    int imag, real;
};
Complex Complex::operator+(Complex&b) {
    return Complex(real + b.real, imag + b.imag);
}
int main() {
    Complex a(1, 2), b(3, 4), c;
    c = a + b;         //运算符重载形式
    //c = a.operator+(b);//实际调用形式
    c.show();
    return 0;
}

运行效果:
重载形式
技术分享图片
实际调用形式
技术分享图片

二.运算符重载为非成员函数

对于双目运算符B,如果要实现oprd1Boprd2,函数形参为oprd1,oprd2,表达式oprd1+oprd2相当于调用函数operator B(oprd1,oprd2).

重载形式和实际调用形式

#include<iostream>
using namespace std;
class Complex{
public:
    Complex(int x=0,int y=0):real(x),imag(y){}
    friend Complex operator+(Complex&a,Complex&b);//运算符重载为非成员函数
    void show() {
        cout <<real<<","<<imag<<endl;
    }
private:
    int imag,real;
};
Complex operator+(Complex&a,Complex&b) {
    return Complex(a.real+b.real,a.imag+b.imag);
}
int main() {
    Complex a(1, 2), b(3, 4),c;
    //c = a + b;         //运算符重载形式
    c=operator+(a, b);//实际调用形式
    c.show();
    return 0;
}

运行效果:
重载形式
技术分享图片
实际调用形式
技术分享图片

运算符的重载

原文:https://www.cnblogs.com/putaotao/p/11748937.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!