this指针的用法
2017-10-24 20:58
176 查看
前两天在写学生信息管理系统的时候,翻阅教材发现有return *this 的用法。就仔细的看了下。
首先看一下百度百科中关于C++中this指针的说明:一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。
所以说呢,this指针其实就是个隐含的指针,他是时时刻刻存在的,指向着对象本身,表示当前对象的地址;当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,会隐形使用this指针。当然也可以使用*this来表示调用该成员函数的对象。
那么,return
*this的作用是什么呢?
拿我之前学生管理系统例子来说吧,cList&表示将当前链表对象本身传递回去,要是返回类型是cList的话,那返回的是一个克隆体。
运行结果:
![](https://img-blog.csdn.net/20171028170130823?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFsYV9kYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
由例子可知:函数调用时,会隐含的传递this指针,this指向当前对象。若函数类型为Time&,则直接将对象本身返回,若函数类型为Time,则需先复制,并调用构造函数,最后return的便是这个复制的对象,之后销毁。
首先看一下百度百科中关于C++中this指针的说明:一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。
所以说呢,this指针其实就是个隐含的指针,他是时时刻刻存在的,指向着对象本身,表示当前对象的地址;当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,会隐形使用this指针。当然也可以使用*this来表示调用该成员函数的对象。
那么,return
*this的作用是什么呢?
拿我之前学生管理系统例子来说吧,cList&表示将当前链表对象本身传递回去,要是返回类型是cList的话,那返回的是一个克隆体。
#include<iostream> using namespace std; class Time{ private: int hour, minute, second; public: Time(int h, int m, int s); Time(Time &x); ~Time(); Time &clear_time(); Time _clear_time(); }; Time::Time(int h, int m, int s){ this->hour=h; this->minute=m; this->second=s; cout << "正在构建时间类..." << endl; } Time::Time(Time &x){ this->hour=x.hour; this->minute=x.minute; this->second=x.second; cout << "正在构建时间类..." << endl; } Time::~Time(){ cout << "正在回收时间类..." << endl; } Time &Time::clear_time(){ (*this).hour=0; (*this).minute=0; (*this).second=0; return *this; } Time Time::_clear_time(){ (*this).hour=0; (*this).minute=0; (*this).second=0; return *this; } int main(){ Time T(12,12,12); cout << "--------------" << endl; T.clear_time(); cout << "--------------" << endl; T._clear_time(); cout << "--------------" << endl; return 0; }
运行结果:
由例子可知:函数调用时,会隐含的传递this指针,this指向当前对象。若函数类型为Time&,则直接将对象本身返回,若函数类型为Time,则需先复制,并调用构造函数,最后return的便是这个复制的对象,之后销毁。
相关文章推荐
- c++中this指针的用法详解
- 【转】C++中this指针的用法详解
- C++中this指针的用法详解 http://blog.chinaunix.net/uid-21411227-id-1826942.html
- this指针的介绍和用法
- C++中this指针的用法
- C++中this指针的用法.
- c++中this指针的用法
- C++中this指针的用法详解
- C++中this指针的用法详解
- C++中this指针的用法及介绍
- this指针的介绍和用法
- C++中this指针的用法详解(转)
- C++中this指针的用法详解
- C++中this指针的用法
- C++中this指针的用法详解
- this指针用法
- C#中this指针的用法示例
- C++中this指针的用法详解
- this指针的用法
- this指针的介绍和用法