This 指针和链表

问题描述 投票:0回答:1

Stroustrup 在《C++ 的设计与演化》中写道:

如果没有

this
或某些等效机制,成员函数就不能用于链表操作。

他的意思是什么?它仍然与现代编译器相关吗?

我通常发现很难描述

this
指针的有效用例,因为编译器通常在不使用
this
的情况下做正确的事情。

c++ linked-list this
1个回答
0
投票

我不确定 Stroustrup 博士的意图是什么,但想象一个循环链表。创建第一个可能需要您执行以下操作:

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
。在某些情况下,您需要回调,或者当您想将自己作为参数传递给其他对象的调用时。

© www.soinside.com 2019 - 2024. All rights reserved.