c++ - 声明指向 *this* 对象的指针的优点或原因是什么?

标签 c++ oop

声明指向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/

相关文章:

c++ - Boost Spirit(经典): Inline parser, 工作,除了跳过评论

c++ - 为什么必须在哪里放置 “template”和 “typename”关键字?

c++ - 在qt中获取项目的正确版本

c++ - MingW C++ 文档?

java - 使用泛型方法替代重载?

c++ - 无法使用 OOP C++ 打印堆栈项

python - 当我们导入一个模块时,我们是否只是让主模块可以访问导入模块的命名空间?

c++ - 快速选择 DOM 中的元素

java - 是否应该在一个列表中更新多态对象

language-agnostic - "program to an interface"是什么意思?