提问人:user11654732 提问时间:10/5/2023 最后编辑:trincotuser11654732 更新时间:10/5/2023 访问量:96
此指针和链表
This-pointer and linked list
问:
Stroustrup在“C++的设计与演进”中写道:
如果没有或某种等效机制,成员函数不能用于链表操作。
this
他这是什么意思,它与现代编译器仍然相关吗?
我通常发现很难描述-pointer的有效用例,因为编译器通常在不使用.this
this
答:
2赞
Joseph Larson
10/5/2023
#1
我不确定斯特鲁斯特鲁普博士的意图,但想象一个循环链表。创建第一个可能需要执行如下操作:
next = this;
prev = this;
您也不能有父子关系,其中孩子需要指向父项的指针:
Child * child = new Child;
child->parent = this;
您也无法编写正确的 operator= 函数,这些函数返回 *this。构建器模式也经常返回 this(作为参考 -- *this)。我是这样写我的二传手的:
Class & setFoo(int value) { foo = value; return *this; }
因为这样我就可以做到:
obj.setFoo(1)
.setBar(2)
.setZulu("Hello);
(大多数人写 setter 是为了返回 void,但我喜欢这种风格。
你用了很多。在有些回调情况下,您需要它,或者当您希望将自己作为参数传递给其他对象的调用时。this
评论
this->
this
this
this
that->next = this;
this