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; |
打败一切。