您的位置:首页 > 编程语言 > C语言/C++

C++this指针详解

2016-03-06 16:42 337 查看
http://blog.chinaunix.net/uid-21411227-id-1826942.html

如:

class A{} ;

class B

{

        public:

              B b ;

              A a ;

              b.foo() ;

               return 0 ;

} ;

其中对象a作为函数的实参,叫做参数对象;

其中对象b作为函数的调用者,叫做调用对象;

this指针的基本概念:

        一般来说,关键字this就是一个指针,对于一般成员函数来说,该指针指向调用对象;而对于构造函数来说,该指针指向当前正在构造的对象

        第一句话的解释:在成员函数或是构造函数中会隐藏一个this指针。如下:

class Student

{

    private:

        string m_name ;

        int m_age ;

    public:

        //Student(Student* this,const string& name,int age)

        Student(const string& m_name ,int m_age)

        {

            this->m_name = m_name ;//比如,构造Paul这个对象,m_name是Paul的私有成员变量m_name,将构造函数中的参数赋值给Paul的成员变量

            this->m_age = m_age ;

        }

        void print()      //ptint(Student* this)

        {

            cout <<"我是" <<m_name <<",今年" <<m_age<<"岁"<<endl ;

        }

} ;

int main()

{

     //Student s1(&s1,"Paul",26)

    Student s1("Paul",26) ;

    s1.print() ;//print(&s1) ;

   

    return 0 ;

}

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

this指针的使用场合:

(1)在构造函数中,this指针可以区分形参名和类中的成员变量名相同时。使用初始化列表的的方式不存在该问题,以后变成建议使用初始化列表 ;

(2)this指针可以返回自引用

(3)this指针可以作为函数的参数实现对象间的交互。

class father
{
public:
void seta(){........}
};
class son:public fataher
{
public:
void get(){......}
};
void main()
{
son s;
s.seta();
}
此时 s.seta() 中的this指针指向谁??????

this 指针指向s
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: