关于c ++:声明指向* this *对象的指针的优点或原因是什么?

What is the advantage or reason to declare a pointer to *this* object?

声明指向此对象的指针的优点或原因是什么?

假设一个对象有一个私有变量"x"。

我经常看到这个代码:

1
2
class_name<T> &ma = *this;
ma.x = 1;

而不是

1
this->x = 1;

甚至更简单

1
x = 1;


当您的类的基类是模板类时,EDCOX1 OR 0指针对于引用基类的任何成员都是强制性的。这就是前两个版本在这种情况下可能出现的原因,第三个版本会出错。

前两个版本是相同的(在它们被修复后-见下文),并且仅在个人风格上有所区别。

1
2
3
class_name<T>& ma = *this;
ma.x = 1;
ma.y = 2;

VS

1
2
this->x = 1;
this->y = 2;

正如@chris指出的那样,您的第二个版本有一个编译错误,在您的第一个版本中,如果您不使用涉及副本的&,这意味着它正在做一些非常不同的事情(可能是错误的),因为更改不会影响当前对象,而是会在作用域的末尾销毁一个局部变量。

一般情况下,不涉及模板基类,

1
x=1;

打败一切。