鱼C论坛

 找回密码
 立即注册
查看: 2331|回复: 5

谁能用简单的代码 解释运算符重载的逻辑性

[复制链接]
发表于 2014-7-10 22:16:45 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 风之残月 于 2014-11-10 10:19 编辑

运算符重载我总觉得没什么逻辑性,变化多端。不知怎么写才是前置,怎么写能变成后置


#include <iostream>
using namespace std;
class complex
{
private:
    double real, imag;
public:
    complex(double r = 0.0, double  i = 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;
}

最佳答案

查看完整内容

你代码中的 cx1 + cx2 可以看成 cx1.operator+(cx2);//自己对照这个函数,这个函数是Complex类的成员函数,函数名叫operator+,只有一个参数,如果不死扣的话,参数可以是complex类型的(不一定非要是const complex&类型的),总之参数类型写得使cx1.operator+(cx2);看上去正确就可以了。 cx1 + cx2 也可以看成 operator+(cx1, cx2);如果这样看的话,就应该实现为一个普通的函数,它有两个参数,其声明可以是 complex ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-10 22:16:46 | 显示全部楼层
你代码中的  cx1 + cx2  可以看成  cx1.operator+(cx2);//自己对照这个函数,这个函数是Complex类的成员函数,函数名叫operator+,只有一个参数,如果不死扣的话,参数可以是complex类型的(不一定非要是const complex&类型的),总之参数类型写得使cx1.operator+(cx2);看上去正确就可以了。
      cx1 + cx2  也可以看成  operator+(cx1, cx2);如果这样看的话,就应该实现为一个普通的函数,它有两个参数,其声明可以是  complex  operator+( const  complex& a,  const  complex& b);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-10 23:31:46 From FishC Mobile | 显示全部楼层
小仙你要的是什么资料?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-10 23:34:11 | 显示全部楼层
小甲鱼 发表于 2014-7-10 23:31
小仙你要的是什么资料?

运算符重载我总觉得没什么逻辑性,变化多端。不知怎么写才是前置,怎么写能变成后置。一直以来都是照抄代码,自己还是不能理解,老师讲的别的都能。一听实部 虚部我就晕。

点评

运算符重载只有在必要的时候才使用吧,实部、虚部指的是复数吗?具体给个例子,供大家分析分析?  详情 回复 发表于 2014-7-11 14:16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-11 14:16:26 | 显示全部楼层
拈花小仙 发表于 2014-7-10 23:34
运算符重载我总觉得没什么逻辑性,变化多端。不知怎么写才是前置,怎么写能变成后置。一直以来都是照抄代 ...

运算符重载只有在必要的时候才使用吧,实部、虚部指的是复数吗?具体给个例子,供大家分析分析?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-11 17:01:28 | 显示全部楼层
只有++和--两个运算符才分前置和后置,你先不学这两个运算符,其它运算符就没有前置后置的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 19:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表