鱼C论坛

 找回密码
 立即注册
查看: 1373|回复: 1

[已解决]*this作为引用返回的问题

[复制链接]
发表于 2022-12-1 17:05:04 | 显示全部楼层 |阅读模式

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

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

x
#include<iostream>
using namespace std;

//重载递增运算符


//自定义整型
class MyInteger
{
        friend ostream& operator<<(ostream& cout, MyInteger myint);


public:
        MyInteger()
        {
                m_Num = 0;

        }
        //重载前置++运算符  返回引用是为了一直对一个数据进行递增操作
        MyInteger& operator++()
        {
                //先进行++运算
                m_Num++;

                //再将自身做返回
                return *this;

        }
        //重载后置++运算符
        // void operator++(int) int代表占位参数,可以用于区分前置和后置递增
        MyInteger operator++(int)
        {
                //先 记录当时结果
                MyInteger temp = *this;


                //后  递增
                m_Num++;

                //最后将记录结果做返回
                return temp;
        }


private:
        int m_Num;
};

//重载<<运算符
ostream& operator<<(ostream& cout, MyInteger myint)
{
        cout << myint.m_Num;
        return cout;
}

void test01()
{
        MyInteger myiht;

        cout << ++(++myiht) << endl;
        cout << myiht << endl;


}

void test02()
{
        MyInteger myiht;
        cout << myiht++ << endl;
        cout << myiht << endl;


}

int main()
{
        /*test01();*/

        test02();

        /*int a = 0;
        cout << ++(++a) << endl;
        cout << a << endl;*/


       
        return 0;
}
代码
对于成员函数MyInteger operator++(int),定义了局部变量MyInteger temp,所以不能返回局部变量的引用,
那么对于成员函数MyInteger& operator++(),可以返回*this变量的引用,*this是这个对象本身,this指针是一个局部变量,那么为什么能返回*this的引用呢.
最佳答案
2022-12-1 20:27:27
本帖最后由 xiaotubie 于 2022-12-2 11:16 编辑

定义的局部变量是栈中的,函数结束就被销毁,所以外面不能用。
this指向的对象不是局部变量,是函数外面创建的,退出函数对象还是在的。
this是从函数外面作为对象的指针传进来给函数里面用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-1 20:27:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xiaotubie 于 2022-12-2 11:16 编辑

定义的局部变量是栈中的,函数结束就被销毁,所以外面不能用。
this指向的对象不是局部变量,是函数外面创建的,退出函数对象还是在的。
this是从函数外面作为对象的指针传进来给函数里面用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 10:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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