c++基础(this)
Cplusplus-tutorial-in-hindi.jpg
属性和方法属于类,在类实例化过程后this是指向类型实例化后的对象。想要调用类静态方法以外的方法需要先对类型实例化,而后通过实例化的对象调用这些方法。
所以要想调用this,我们需要先实例化一个对象,有了对象,this 才能起作用所以使用this是有前提条件的。
今天分享在 c++ 中 this存在的意义,以及如何使用this。
class Point{ public: int x, y; Point(int x, int y) : x(x), y(y) { } void Print() { std::cout << x << " , " << y << std::endl; }};可以在构造函数进行赋值Point(int x, int y) : x(x), y(y)这样对成员变量进行赋值,我们可以使用这样构造函数初始化列表来进行赋值。
和下面代码一样可能让我们感觉有些不是很清晰,我们想将值赋值给实例化对象上。这时就会用到this。
Point(int x, int y) { x = x; y = y; } Point(int x, int y) { Point *p = this; }由于 this 指向实例化对象的指针,所以调用指针的内容的属性,需要先取值(*this) 而后可以使用(.)操作符来获取其属性。
Point(int x, int y) { Point *p = this; p->x = x; p->y = y; } Point(int x, int y) { //Point *p = this; (*this).x = x; (*this).y = y; }直接通过->调用指针对象的属性进行赋值。这样代码更简单易懂。
Point(int x, int y) { //Point *p = this; this->x = x; this->y = y; }在GetX()也可以调用 Point,由于用const修饰了GetX()这样就限制了GetX中不可以修改类成员变量,所以需要用const进行修饰。
int GetX() const { const Point *e = this; return e->x; }void PrintPoint(Point *p);class Point{ public: int x, y; Point(int x, int y) { Point *p = this; p->x = x; p->y = y; PrintPoint(this); } int GetX() const { const Point *e = this; return e->x; } void Print() { std::cout << x << " , " << y << std::endl; }};void PrintPoint(Point *p){ //Print}void PrintPoint(Point *p);接收 Point 对象的指针作为参数,由于this本身就是指针类型。所以可以直接在构造函数内直接将this传入PrintPoint(this);。
void PrintPoint(Point &p);在 Point 的构造函数可以将*this作为 Point 引用传入到PrintPoint中。
void PrintPoint(Point &p); Point(int x, int y) { Point *p = this; p->x = x; p->y = y; PrintPoint(*this); }说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » c++基础(this)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » c++基础(this)