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