今天 查了些资料,现在总结下c++中this指针
关于this指针的描述我们一般从语言层次上讲;
this指针作为一个隐含参数传递给非静态成员函数,用以指向该成员函数所属类所定义的对象。当不同的对象调用同一个类的成员函数代码时,编译器会依据该成员函数的this指针所指向的不同对象来确定应该引用哪个对象的数据成员。
this指针是一个隐含于每一个成员函数中的特殊指针。它是一个指向正在被该成员函数操作的对象,也就是要操作该成员函数的对象。
当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含作用this指针。而通常不去显式地使用this指针来引用数据成员。同样也可以使用*this来标识调用该成员函数的对象。
再来说下类的成员函数。非静态函数成员,不占用对象的内存,它经C++编译器处理后,它是一个全局函数,它的第一个参数为this指针,其余参数类型和名字,与用户定义的一致。
1)基本用法
class Base
{
public:
void test(int x)
{
this->x= x;
}
public:
int x;
};
2)const成员函数
class Base {
public:
virtual void f()const { cout << "Base::f" << endl; }
};
lass Derive : public Base
{
public:
virtual void f() { cout << "Derive::f" << endl; }
};
执行:
Base* pBase = new Derive;
pBase->f();
之后运行结果是啥?
Base::f
为什么呢?
这个const将隐含的this指针声明成const类型,所以相当于父类和子类的f()函数具有不同的参数,也就是说子类遮蔽了f()函数,此处不具有多态性
发个连接,补充this指针的介绍
http://blog.csdn.net/ugg/article/details/606396
2 this指针探秘
http://bbs.csdn.net/topics/100069525