谁能用简单的代码 解释运算符重载的逻辑性
本帖最后由 风之残月 于 2014-11-10 10:19 编辑运算符重载我总觉得没什么逻辑性,变化多端。不知怎么写才是前置,怎么写能变成后置
#include <iostream>
using namespace std;
class complex
{
private:
double real, imag;
public:
complex(double r = 0.0, doublei = 0.0)
{
real = r;
imag = i;
}
complex operator + (const complex & CC) //百科说这个operator和+运算符要看成整体?
{ //const complex & CC 等值于取右操作数的对象吗?
complex c(real + CC.real, imag + CC.imag); //想知道运算符重载的原理,现在不懂原理,找不出规律\
return c; //全是照抄代码?
}
void disp()
{
cout << real << "," << imag << endl;
}
};
int main()
{
complex cx1(1.0, 2.0), cx2(3.0,4.0);
complex cx3 = cx1 + cx2;
cx3.disp();
return 0;
}
C++编程小组 你代码中的cx1 + cx2可以看成cx1.operator+(cx2);//自己对照这个函数,这个函数是Complex类的成员函数,函数名叫operator+,只有一个参数,如果不死扣的话,参数可以是complex类型的(不一定非要是const complex&类型的),总之参数类型写得使cx1.operator+(cx2);看上去正确就可以了。
cx1 + cx2也可以看成operator+(cx1, cx2);如果这样看的话,就应该实现为一个普通的函数,它有两个参数,其声明可以是complexoperator+( constcomplex& a,constcomplex& b); 小仙你要的是什么资料? 小甲鱼 发表于 2014-7-10 23:31
小仙你要的是什么资料?
运算符重载我总觉得没什么逻辑性,变化多端。不知怎么写才是前置,怎么写能变成后置。一直以来都是照抄代码,自己还是不能理解,老师讲的别的都能。一听实部 虚部我就晕。 拈花小仙 发表于 2014-7-10 23:34
运算符重载我总觉得没什么逻辑性,变化多端。不知怎么写才是前置,怎么写能变成后置。一直以来都是照抄代 ...
运算符重载只有在必要的时候才使用吧,实部、虚部指的是复数吗?具体给个例子,供大家分析分析? 只有++和--两个运算符才分前置和后置,你先不学这两个运算符,其它运算符就没有前置后置的问题。
页:
[1]