| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1493 人关注过本帖
标题:小白求助 一元运算符重载的*this问题
只看楼主 加入收藏
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
结帖率:50%
收藏
 问题点数:0 回复次数:5 
小白求助 一元运算符重载的*this问题
#define _CRT_SECURE_NO_WARNINGS
#include "iostream"
using std::endl;
using std::cout;
using std::cin;

class Complex
{
private:
    int a;
    int b;
public:
    Complex(int a, int b)
    {
        this->a = a;
        this->b = b;
    }
public:
    void printTest()
    {
        cout << this->a << " " << this->b << endl;
    }
public:
    Complex& operator--()
    {
        this->a--;
        this->b--;   //问题2:返回变量本身是啥意思?这个引用不是相当于Complex* const operator- -() 吗?相当于返回this指针
        return *this;//问题1: 这个返回*this是返回一个变量标识的空间吗?相当于返回后面的c1吗?有点迷糊,为啥 - -c1返回本身的空间?
    }
};

void main()
{
    Complex c1(11, 22);
    --c1;
    c1.printTest();
    system("pause");
}
搜索更多相关主题的帖子: this int 返回 Complex public 
2020-03-21 13:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
问题1: 只有返回 Complex& 才能实现连续的自减,例如 ----c1。而之所以要能连续的自减,是因为 内建类型 就能自减,为了风格统一。
问题2: 没听懂。
    怎么就“相当于 Complex* const operator- -() ”了呢?明明不是 Complex* 而是 Complex&;
    怎么就“相当于返回this指针”了呢?明明是返回 自身的引用,*this 的引用。
2020-03-21 16:48
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
回复 2楼 rjsp
老弟 引用的实质是一个常指针啊 int& 等价于 int* const
2020-03-23 13:30
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
回复 2楼 rjsp
返回引用 是不是就是返回自身  如果返回值得话 是自身值得一个拷贝吗
2020-03-23 13:32
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 3楼 d7se123
你连语法都没捋顺
别谈本质

https://zh.
2020-03-23 14:57
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
回复 5楼 lin5161678
哈哈 我知道 实现运算符重载 一般是 成员函数 ;
我这照视频打的代码 主要是为了实现对友元函数的了解;
恳请大佬多多指点
2020-03-23 19:49
快速回复:小白求助 一元运算符重载的*this问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026521 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved