首页 > 编程语言 > 详细

C++ this指针

时间:2020-02-23 01:10:08      阅读:63      评论:0      收藏:0      [点我收藏+]

this指针是一个const指针,它指向当前对象,通过它可以访问当前对象的所有成员。

#include<iostream>
#include<string> 
using namespace std;

class Student{
public:
    void setname(string name);
    void setage(int age);
    void setscore(float score);
    void show();
private:
    string name;
    int age;
    float score;
};
void Student::setname(string 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.5);
    pstu -> show();
    return 0;
}

this只能用在类的内部,通过this可以访问类的所有成员,包括private, protected, public属性的。

上述例子中成员函数的参数和成员变量重名,只能通过this区分。

this虽然用在类的内部,但是只有在对象被创建以后才会给this赋值,并且赋值的编译器自动完成的,不需要用户干预。上述例子中this的值和pstu的值是相同的。

注意:

  • this是const指针,它的值是不能被修改的。
  • this只能在成员函数内部使用。
  • 只有在对象被创建后this才有意义,因此不能在static成员函数中使用。

this到底是什么

this实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给this。不过this这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。

this作为隐式形参,本质上是成员函数的局部变量,所以只能用在成员函数的内部,并且只有在通过对象调用成员函数时才给this赋值。

注意:成员函数最终被编译成与对象无关的普通函数,除了成员变量,会丢失所以信息,所以编译时要在成员函数中添加一个额外的参数,把当前对象的首地址传入,以此来关联成员函数和成员变量。
这个额外的参数,就是this,它是成员函数和成员变量关联的桥梁。

C++ this指针

原文:https://www.cnblogs.com/xiaobaizzz/p/12348112.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!