声明指向该对象的指针有什么好处或理由?
假设一个对象有一个私有变量“x”。
我经常看到这段代码:
class_name<T> &ma = *this;
ma.x = 1;
代替
this->x = 1;
甚至更简单
x = 1;
当您的类的基类是模板类时,this
指针对于引用基类的任何成员都是必需的。这就是为什么在这种情况下可能会出现前两个版本,而第三个版本会出错的原因。
前 2 个版本是相同的(在它们被修复后 - 见下文),只是在个人风格上有所不同。
class_name<T>& ma = *this;
ma.x = 1;
ma.y = 2;
对比
this->x = 1;
this->y = 2;
正如@chris 指出的那样,您的第二个版本有一个编译错误,并且在您的第一个版本中,如果您不使用&
它涉及一个副本,这意味着它正在做一些非常不同的事情(可能是错误的),因为更改不会影响当前对象但是一个局部变量,它将在作用域的末尾被销毁。
在不涉及模板基类的一般情况下,
x=1;
击败所有。