之前学习this指针的时候,其实是模糊的,然后今天看到了一个视频,关于this的,我就看了一下,简单地总结了一下,详细见程序
#include<iostream>
using namespace std;
class A
{public:
A(int a)//A_Init(A*this,int a)
{
cout << "A()..." << endl;
m_a = a;
}
A(const A&a)//A_Copy(A*this)
{
cout << "A(&)...." << endl;
m_a = a.m_a;
}
int GetA()//int GetA(A*this)
//如果只读不写,那就需要加一个const,但是不可以写成int GetA(const)
//因为()里的指针被隐藏掉了,正确形式:int GetA() const
//我之前用C++primer的书时,就感觉他说的让我很晕
{
//关于this指针
this->m_a = 120;//这样是可以正常编译的,所以this一定不是const A*this
//如果指针指向常量,会报错
//this++;编译报错:表达式必须是可修改的左值,说明this是一个常值
//即A *const this,它的内容可以改变,值不行
return m_a;
//return this->m_a;
}
void PrintA()//void PrintA(A*this)
{
cout << "a=" << m_a << endl;
}
~A()
{
cout << "~A...." << endl;
}
private:
int m_a;
};
int main()
{
A a1(10);
A a2(100);
A a3(a1);
a1.GetA();//相当于GetA(&a1)
a1.PrintA();//相当于PrintA(&a1)
a2.GetA();//相当于GetA(&a2)
a2.PrintA();//相当于PrintA(&a2)
return 0;
}