0

声明指向对象的指针有什么好处或理由?

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

我经常看到这段代码:

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

代替

this->x = 1;

甚至更简单

x = 1;
4

1 回答 1

2

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

前 2 个版本是相同的(在它们被修复后 - 见下文),只是在个人风格上有所不同。

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

对比

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

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

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

x=1; 

击败所有。

于 2013-01-08T03:17:30.603 回答