Stroustrup 在《C++ 的设计与演化》中写道:
如果没有
或某些等效机制,成员函数就不能用于链表操作。this
他的意思是什么?它仍然与现代编译器相关吗?
我通常发现很难描述
this
指针的有效用例,因为编译器通常在不使用 this
的情况下做正确的事情。
我不确定 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
。在某些情况下,您需要回调,或者当您想将自己作为参数传递给其他对象的调用时。