this指针

this

Note:不论是类中的构造函数,还是类中的普通成员函数,内部都隐含一个形参叫this指针,用于接收当前正在构造/调用对象的地址,因此不同的对象被构造/调用时,同一个函数的执行结果不同;对于一般成员函数来说,该指针指向调用对象,对于构造函数来说,该指针指向当前正在构造的对象

  1. this指针可以用于在构造函数中区分与构造函数形参名相同的成员变量,this->m_name=m_name;使用初始化列表的方式不存在该问题,因此以后编程建议采用初始化列表
  2. this指针可以用于返回自引用的场合;
  3. 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;
    }
上一篇:Java核心技术 卷Ⅰ 基础知识(5)


下一篇:神经网络中的偏置项b到底是什么?