***************************************************
更多精彩,欢迎进入:http://shop115376623.taobao.com
***************************************************
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()函数,此处不具有多态性