一.为什么会产生this指针??
二.this指针的特点。
三.__thiscall的调用方式
四.问题
class Box
{
public:
int volume(int height, int width, int length)
{
return height*width*length;
}
private:
};
int main()
{
Box t1, t2, t3;
t1.volume(2, 4, 5);
t2.volume(3, 6, 9);
t3.volume(7, 8, 9);
system("pause");
return 0;
}
我们可以从上边代码看出,定义了三个对象t1,t2,t3再调用时他们是如何区分自身的height,width,length这时候就需要他们各自的this指针来完成。在调用时系统会把对象t1的起始地址赋给this指针,于是在成员函数引用数据成员时,就按照this的指向找到各自对应的数据成员。(这里可以从反汇编中更好的理解)
从反汇编理解this指针:https://blog.csdn.net/jxz_dz/article/details/47808795
class Box
{
public:
int volume(int height, int width, int length)
{
return height*width*length;
}
private:
};
int volume(int height, int width, int length)
{
return height*width*length;
}
int main()
{
Box t1, t2;
t1.volume(2, 4, 5);
t2.volume(3, 6, 9);
volume(1, 2, 3);
system("pause");
return 0;
}
1.引用底层的是指针,此处为什么不是引用,而是this指针???
因为this指针出现的时间比引用早所以用this指针
2.this指针可以为空吗??
#include
#include
using namespace std;
class MyClass
{
public:
void show()
{
//this指向的就是该函数的地址(正在调用时的成员函数所在对象的起始地址)(寄存在ecx中)
cout << this << endl;
}
private:
};
int main()
{
//this指针也可以为空
MyClass* t = NULL;
t->show();
system("pause");
return 0;
}
this指针关于delete的问题:
参考:https://blog.csdn.net/shltsh/article/details/45949755