您的位置:首页 > 编程语言 > C语言/C++

c++重载操作符的使用及实现编译多态

2014-10-22 19:22 447 查看
#include<iostream>

using namespace std;

class CComplex{

private:
double m_fReal, m_fImag;

public:
CComplex(double r = 0, double i = 0) :m_fReal(r), m_fImag(i){

}

double GetReal(){
return m_fReal;
}

double FetImag(){
return m_fImag;
}

CComplex operator + (CComplex&);
CComplex operator + (double);

};

CComplex CComplex::operator+(CComplex& c){
this->m_fReal += c.GetReal();
this->m_fImag += c.FetImag();

return *this;

}

CComplex CComplex::operator+(double d){
this->m_fReal = this->m_fReal + d;
return *this;

}

int main()

{
CComplex c1(2.3, 3.5), c2(3.6, 6.8) , c3;

cout << "使用重载的operator+运算符实现复数与复数的相加" << endl;
cout << "c1 = " << c1.GetReal() << "+j" << c1.FetImag() << endl;
cout << "c2 = " << c2.GetReal() << "+j" << c2.FetImag() << endl;

c3 = c1 + c2;

cout << "c3  = " << c3.GetReal() << "+j" << c3.FetImag() << endl;
cout << "使用重载的+运算符实现复数和实数的相加" << endl;

c3 = c3 + 6.5;
cout << "c3  =  " << c3.GetReal() << "+j" << c3.FetImag() << endl;

getchar();
getchar();

return 0;
}

重载运算符时,需要注意下面几个问题:

1.只能重载c++语言中已有的运算符,不能臆造新的运算符

2.重载运算符后,不改变原运算符的优先级和结核性,且不能改变操作数个数

3.经重载的运算符,其操作的数据中至少有一个应该是自定义类型

4.不是所有的c++运算符都能重载,不能重载的运算符有下面6个:成员访问运算符“.” 、成员指针运算符“*” 和“->”,作用域运算符“::” sizeof运算符和三木运算符”?:“
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++