C++_this指针详解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值