大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C++技巧 > C++运算符重载——重载二元运算符

C++运算符重载——重载二元运算符(2)

关键词:重载二元运算符C++  阅读(1243) 赞(20)

[摘要]本文是对C++运算符重载——重载二元运算符的讲解,对学习C++编程技术有所帮助,与大家分享。
3、应用举例(对象 ? 基本数据类型 or 基本数据类型 ? 对象)

上面的例子中是对象 和 对象之间的运算符重载,如果需要一个是对象 + char/int/float/double,或者反过来char/int/float/double + 对象,这时上面的程序的重载方式就不适用了。

需要定义新的重载,如下列程序所示。

#include <iostream>
using namespace std;

class ComplexD
{
public:
    ComplexD(double re = 0, double im = 0):real(re),image(im){}

    ComplexD operator+(ComplexD& ref){return ComplexD(real+ref.real, image+ref.image);};
    ComplexD operator+(int a){cout<<"IN\t int \t\t";return ComplexD(real+a, image);};
    ComplexD operator+(double d){cout<<"IN\t double \t";return ComplexD(real+d, image);};
    ComplexD operator+(float f){cout<<"IN\t float \t\t";return ComplexD(real+f, image);};

    void display(void){cout<<real<<"+"<<image<<"i"<<endl;}
    double GetReal(void){return real;}
    double GetImage(void){return image;}
private:
    double real;
    double image;
};

ComplexD operator+(int a, ComplexD& ref){cout<<"OUT\t int \t\t";return ComplexD(ref.GetReal()+a, ref.GetImage());};
ComplexD operator+(double d, ComplexD& ref){cout<<"OUT\t double \t";return ComplexD(ref.GetReal()+d, ref.GetImage());};
ComplexD operator+(float f, ComplexD& ref){cout<<"OUT\t float \t\t";return ComplexD(ref.GetReal()+f, ref.GetImage());};

int main(void)
{
    ComplexD D1(2,4), D2;
    D2 = D1 + 2; D2.display();
    D2 = D1 + 2.1f; D2.display();
    D2 = D1 + 2.1; D2.display();

    D2 = 2 +D1; D2.display();
    D2 = 2.1f + D1; D2.display();
    D2 = 2.1 +D1; D2.display();

    return 0;
}
«上一页12下一页»


相关评论