0
点赞
收藏
分享

微信扫一扫

c++基础(this)

属性和方法属于类,在类实例化过程后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 

在 Point 的构造函数可以将*this作为 Point 引用传入到PrintPoint中。

void PrintPoint(Point 
    Point(int x, int y)
{
Point *p = this;
p->x = x;
p->y = y;
PrintPoint(*this);
}
举报

相关推荐

0 条评论