gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:25:24 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com