this的疑问
我是初学者!!我对this这个指针理解不很到位!!尤其对c++函数中隐藏的this和vc中各个界面及c...类中的this的理解更是不行,希望各位大侠们,能把你们对this的一些看法说与我听一听,我也好能更上一层楼!!!!!
推荐阅读
设有类
class ctest
{
public:
void test()
{
cout << this->m_nval << endl;
}
int m_nval;
};
//
调用时
ctest t;
t.m_nval = 123;
t.test();
可以想象编译器在暗中为类每个成员添加了一个指针形参(ctest *),
故ctest::test()实质上为ctest::test(ctest *this),
而调用t.test()时则变为t.test(&t),
从而存在一个名为this的指针
cout << this->m_nval << endl;
当然也可以直接写cout << m_nval << endl;
那样编辑器会自动加上"this->"
this指针是隐含属于类的非静态成员函数的,当从一个对象上调用某个成员函数时,这个成员函数的this指针就指向该对象,当再次从另一个对象上调用这个成员函数时,这个函数的this指针就指向另一个对象。
原因是成员函数的代码每个类只有一份,而不是每一个对象都有一份,因此需要有一种内部机制保证调用a.f()时,能够操纵a对象,而且操纵的就是a对象,而不是b对象,this指针就是这种机制的实质。
每一个类都有一个this指针指向类的实例,创建一个类的实例以后,this就指向自己了,不用初始化
用this引用可以明确区分当前类的成员变量与函数中的局部变量
this指针是指向当前类对象的指针
我认为vcforever(霓裳羽衣) 说的最恰当,this指向的是类的实例,而不是类本身,如果指向类本身的话,它只能是静态的了,而this不是静态的。
这和vb的me是一样的,和delphi的self应该也一样吧?


讨论区