c++this指针

今天 查了些资料,现在总结下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指针的介绍

1 深入探讨this指针

http://blog.csdn.net/ugg/article/details/606396

2 this指针探秘

http://bbs.csdn.net/topics/100069525

this指针探秘

 

你可能感兴趣的:(c++this指针)