鱼C论坛

 找回密码
 立即注册
查看: 2799|回复: 8

关于引用做返回值的问题

[复制链接]
发表于 2020-1-21 15:14:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#define _CRT_SECURE_NO_WARNINGS
#include "iostream"
using std::cout;
using std::cin;
using std::endl;

class Complex
{
private:
        int a;
        int b;
public:
        Complex(int a, int b)
        {
                this->a = a;
                this->b = b;
        }
public:
        void printCom()
        {
                cout << this->a << "  " << this->b << endl;
        }
public:
        friend Complex& operator++(Complex &c);
public:
        Complex& operator--()
        {
                this->a--;
                this->b--;
                return *this;
        }
};

Complex& operator++(Complex &c)
{
        c.a++;
        c.b++;
        return c;
}

void main()
{
        Complex c(11, 22);
        ++c;
        c.printCom();

        --c;
        c.printCom();
        system("pause");
}


问题:Complex& 返回一个引用究竟是啥子意思?为啥Complex& 返回的是c  有时返回*this  *this应该是对象吧
1.PNG
2PNG.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-21 17:22:47 | 显示全部楼层
你看的哪个教材?听我的,把那个教材撕了,换一个
正确的++,--运算符重载只有下面这4条语句
T &operator++();
const T operator++(int);

T &operator--();
const T operator--(int);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-1-21 17:24:40 | 显示全部楼层
人造人 发表于 2020-1-21 17:22
你看的哪个教材?听我的,把那个教材撕了,换一个
正确的++,--运算符重载只有下面这4条语句

我看的是 传智 扫地僧讲的视频 讲的很好  可能是视频有点老了 你这个代码是哪本书里的 我去看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-21 17:25:26 | 显示全部楼层
人造人 发表于 2020-1-21 17:22
你看的哪个教材?听我的,把那个教材撕了,换一个
正确的++,--运算符重载只有下面这4条语句

你这个运算符重载 是成员函数吧 我在试着用成员函数 和友元函数都进行运算符重载
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-21 17:31:56 | 显示全部楼层
琴长不过时光 发表于 2020-1-21 17:25
你这个运算符重载 是成员函数吧 我在试着用成员函数 和友元函数都进行运算符重载

为什么要在类外重载或者在其他类中重载这两个运算符
这可是++,--运算符,是要改变当前对象的

首先,在类外重载一定是不可行
在其他类中以友元函数的形式重载也不妥(从可移植的角度来讲)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-21 17:32:29 | 显示全部楼层
More Effective C++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-21 18:37:40 From FishC Mobile | 显示全部楼层
能不用友元函数重载就别用。可能会发生一些非预期的类型转化,在火车上暂时没法实验,不过几天前我被这东西坑惨了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-21 18:45:45 From FishC Mobile | 显示全部楼层
本帖最后由 Croper 于 2020-1-21 18:47 编辑

https://fishc.com.cn/forum.php?mod=viewthread&tid=154100
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-22 20:58:44 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 07:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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