this
Note:不论是类中的构造函数,还是类中的普通成员函数,内部都隐含一个形参叫this指针,用于接收当前正在构造/调用对象的地址,因此不同的对象被构造/调用时,同一个函数的执行结果不同;对于一般成员函数来说,该指针指向调用对象,对于构造函数来说,该指针指向当前正在构造的对象
- this指针可以用于在构造函数中区分与构造函数形参名相同的成员变量,this->m_name=m_name;使用初始化列表的方式不存在该问题,因此以后编程建议采用初始化列表
- this指针可以用于返回自引用的场合;
-
this指针可以作为函数的参数实现对象间的交互
//使用this指针作为函数的参数实现对象间的交互 #include<iostream> #include<string> using namespace std; class Student; //在Teacher前加声明 class Teacher{ private: string m_answer; public: //自定义函数实现模拟教学的功能 void educate(Student* ps); //自定义函数模拟思考的功能 void reply(const string& answer){ m_answer=answer; } }; class Student{ public: //自定义函数模拟学生提问的环节 void ask(const string& question,Teacher* pt){ //1.学生公布提出的问题 cout<<question<<endl; //2.老师思考并将答案记录起来 pt->reply("this 指针就是用于记录调用对象地址的指针"); } }; //自定义函数实现模拟教学的功能 void Teacher::educate(Student* ps){ //1.学生开始提问 ps->ask("什么是this指针?",this); //this作为函数的实参,指向调用educate()的对象的地址 //2.老师公布答案 cout<<m_answer<<endl; } int main(){ Teacher t; Student s; t.educate(&s); return 0; }