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运算符和三木运算符”?:“
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++中的重载操作符和虚函数实现多态
- 【Android】ADT中使用NDK编译已有的C++实现的库文件
- C++的多态如何在编译和运行期实现
- C++的多态如何在编译和运行期实现
- 使用模板实现编译期间多态(类名当参数)
- C++的多态如何在编译和运行期实现
- C++的多态如何在编译和运行期实现
- 不使用virtual关键字实现C++多态
- cocosdx交叉编译到android使用jni实现java端调用C++方法
- C++的多态如何在编译和运行期实现
- 使用模板实现编译期间多态
- C++ 使用2个栈实现队列的方法(可直接编译)
- 用C实现C++的多态---剖析GTK的"对象" (一)
- C++对象布局及多态实现探索之内存布局
- [语音合成技术第四讲]使用C++实现语音识别
- C++对象布局及多态实现探索之虚继承
- C++对象布局及多态实现之动态和强制转换
- c++ 如何实现多态
- C++多态如何实现 | sys_brk原理
- 使用c++实现事件注册