C++ this指针

来源:互联网 发布:sketchup unity3d 编辑:程序博客网 时间:2024/05/12 19:47

关于this指针的一个经典回答:
当你进入一个房子后,你可以看见桌子、椅子、地板等,但是房子你是看不到全貌了。
对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?
this是一个指针,它时时刻刻指向你这个实例本身

类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有this指针,通过this指针来访问自己的地址。注:this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。

#include <iostream>using namespace std;class Student{public:void setname(char *name);void setage(int age);void setscore(float score);void show();private:char *name;int age;float score;};void Student::setname(char *name){this->name = name;}void Student::setage(int age){this->age = age;}void Student::setscore(float score){this->score = score;}void Student::show(){cout << this->name << "的年龄是" << this->age << ",成绩是" << this->score << endl;}int main(){Student *pstu = new Student;pstu->setname("小红");pstu->setage(16);pstu->setscore(96);pstu->show();return 0;}
this 只能用在类的内部,通过 this 可以访问类的所有成员,包括 private、protected、public 属性的。this 是一个指针,要用->来访问成员变量或成员函数。this 虽然用在类的内部,但是只有在对象被创建以后才会给 this 赋值,并且这个赋值的过程是编译器自动完成的,不需要用户干预,用户也不能显式地给 this 赋值。

总结三点:

1. this 是 const 指针,它的值是不能被修改的,一切企图修改该指针的操作,如赋值、递增、递减等都是不允许的。
2. this 只能在成员函数内部使用,用在其他地方没有意义,也是非法的。
3. 只有当对象被创建后 this 才有意义,因此不能在 static 成员函数中使用。

参考:

http://www.cnblogs.com/zhangruilin/p/5769843.html

https://sanwen8.cn/p/124gLUn.html

http://www.2cto.com/kf/201606/513938.html

http://blog.csdn.net/xiaohaijiejie/article/details/51787351

0 0
原创粉丝点击