*this作为引用返回的问题
#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的引用呢. 本帖最后由 xiaotubie 于 2022-12-2 11:16 编辑
定义的局部变量是栈中的,函数结束就被销毁,所以外面不能用。
this指向的对象不是局部变量,是函数外面创建的,退出函数对象还是在的。
this是从函数外面作为对象的指针传进来给函数里面用的
页:
[1]