在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
this 是C++中的一个关键字,也是一个常量指针,指向当前对象(具体说是当前对象的首地址)。通过 this,可以访问当前对象的成员变量和成员函数。 所谓当前对象,就是正在使用的对象,例如对于 假设 this 指向 stu 对象,那么下面的语句中,this 就和 pStu 的值相同: Student stu; //通过Student类来创建对象 Student *pStu = &stu; 通过 this 来访问成员变量: class Student{ private: char *name; int age; float score; public: void setname(char *); void setage(int); void setscore(float); }; void Student::setname(char *name){ this->name = name; } void Student::setage(int age){ this->age = age; } void Student::setscore(float score){ this->score = score; } 本例中,函数参数和成员变量重名是没有问题的,因为通过 this 访问的是成员变量,而没有 this 的变量是函数内部的局部变量。例如对于 对象和普通变量类似;每个对象都占用若干字节的内存,用来保存成员变量的值,不同对象占用的内存互不重叠,所以操作对象A不会影响对象B。 上例中,创建对象 stu1 时,this 指针就指向了 stu1 所在内存的首字节,它的值和 &stu1 是相同的;创建对象 stu2 时,this 等于 &stu2;创建对象 stu3 时也一样。 我们不妨来证明一下,给 Student 类添加一个成员函数,输出 this 的值,如下所示: void Student::printThis(){ cout<<this<<endl; } 然后在 main 函数中创建对象并调用 printThis: Student stu1, *pStu1 = &stu1; stu1.printThis(); cout<<pStu1<<endl; Student stu2, *pStu2 = &stu2; stu2.printThis(); cout<<pStu2<<endl; 可以发现,this 确实指向了当前对象的首地址,而且对于不同的对象,this 的值也不一样。 几点注意:
this 到底是什么实际上,this 指针是作为函数的参数隐式传递的,它并不出现在参数列表中,调用成员函数时,系统自动获取当前对象的地址,赋值给 this,完成参数的传递,无需用户干预。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论