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指针可以作为函数的参数实现对象间的交互。
this 指针指向s
如:
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
相关文章推荐
- C++的函数重载
- 详解C/C++预处理器
- 为什么在C语言中函数的声明很重要
- c++小结二
- 学习c++要了解的cin的几个输入函数为了让自己记住,也希望对大家有帮助,出错的话还希望多指教
- C++ 的 get_time 和 put_time 函数
- C++和Java中文Api
- c++基础总结一
- C语言——字符串函数
- 二叉树反转
- 学习C++反汇编-多继承
- C++中const修饰二级指针(从类型‘int**’到类型‘const int**’的转换无效)
- C语言实现使用动态数组来构造栈结构
- CAF(C++ actor framework)使用随笔(延迟发送,消息转发,消息优先级)(四)
- C/C++基础-001
- C++primer plus 编程练习10.10
- C语言中的static 详细分析
- C/C++学习之基础-001
- C++11中值得关注的几大变化
- c++中的继承和组合