声明指向this 对象的指针的优点或原因是什么?
假设一个对象有一个私有(private)变量“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;
胜过一切。
关于c++ - 声明指向 *this* 对象的指针的优点或原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207637/