c++ this 指针简单使用
this指针的使用场景
假设我们有一个类stock,这个类的private里面有一个变量total_val,我们需要和其他同类的对象比较该变量的大小,因此我们在public里面写一个函数,函数用来和另一个同类对象的total_val比较大小,并返回total_val值更大的那个stock对象。起名参考的是《c++ primer plus》
class stock
{
private:
int total_val;
public:
stock(int a) : total_val(a){};//构造函数
stock &top_val(stock &s);//和另一个同类对象比较total_val大小的函数,返回更大的stock对象
int show();//用来显示total_val
};
下面我们来写一下stock &top_val(stock &s)函数的实现
stock &stock::top_val(stock &s)
{
if (s.total_val > total_val)
{
return s;
}
if (s.total_val < total_val)
{
return 什么呢;
//当我们本身这个对象的total_val 比参数引用对象的total_val 更大时,我们要怎么返回自己的地址呢
}
return s;
}
这个时候就用到了this指针,this指针指向本对象的地址,因此我们可以直接返回this指针指向的地址里面的内容,也就是本对象。
return *this;
这就是一个简单的this指针使用场景。
下面我给大家一个简单的代码,大家可以亲自实验一下
#include <iostream>
class stock
{
private:
int total_val;
public:
stock(int a) : total_val(a){};
stock &top_val(stock &s);
int show();
};
stock &stock::top_val(stock &s)
{
if (s.total_val > total_val)
{
return s;
}
if (s.total_val < total_val)
{
return *this;
}
return s;
}
int stock::show()
{
std::cout<<"total_val="<<total_val<<std::endl;
return 0;
}
int main()
{
stock a(1);
stock b(2);
stock test = a.top_val(b);//把返回的值赋给test
test.show();
return 0;
}