声明指向*this*对象的指针的优点或理由是什么?

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

本文关键字:理由 是什么 指针 this 对象 声明      更新时间:2023-10-16

声明指向这个对象的指针的优点或理由是什么?

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

我经常看到这样的代码:

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

this->x = 1;

或者更简单的

x = 1;

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

前两个版本是相同的(在他们被固定之后-见下文),只是在个人风格上有所区别。

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

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

正如@chris指出的,你的第二个版本有一个编译错误,在你的第一个版本中,如果你不使用&涉及到一个拷贝,这意味着它正在做一些非常不同的(可能错误),因为这些变化不会影响当前对象,而是一个局部变量,它将在作用域结束时被销毁。

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

x=1; 

节拍。