C++中this指针的类型
在C++中this指针是隐藏起来的,我们无法直接看出this指针的类型,但知道this指针是指向成员函数作用的对象的,通过下面代码,可以得出this指针的类型是什么样子的。
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
class Test
{
public:
Test(int a)
{
this->m_a = a;
}
public:
int getA()
{
this->m_a = 100;//this指针不是const Test *类型的,所以可以修改变量的值
//this++;//this指针是一个常指针,其类型为Test * const 类型
return this->m_a;
}
int getAA()const //在成员函数尾部加上const 就可以修饰this指针,使其不能修改变量的值,相当于const Test *const 类型
{
//this->m_a = 200;
return this->m_a;
}
private:
int m_a;
};
int main()
{
Test t1(10);
cout<<"a = "<< t1.getA() <<endl;
cout<<"a = "<< t1.getAA() <<endl;
return 0;
}
在getA()函数中可以通过this->m_a直接修改m_a的值,说明this指针不是const Test * 型,代码中无法运行this++,说明this指针是一个常指针,其类型为Test * const 型。
因为this指针是隐藏起来的,如果想让this指针指向的内容无法修改,即想将this的类型变为const Test *const 型就需要在成员函数尾部加上const 就可以修饰this指针,使其不能修改变量的值,相当于const Test *const 类型。
如以上代码中的getAA()函数,在其函数后面加上const后,this->m_a=200这句代码便无法像getA()函数中那样运行。