为什么在C++中不推荐使用"this"作为非const

Elp*_*rto -2 c++ this deprecated this-pointer

为什么this在C++中被弃用?thisC++中的指针this与Java中的指针有何不同?

维基百科错了

早期版本的C++会让this指针改变; 通过这样做,程序员可以改变方法正在处理的对象.这个功能最终被弃用了,现在C++中的这个是const.

cor*_*iKa 17

我相信你的错误在于你如何解释这条线.他们没有说"这个功能已被弃用".仅仅重新分配this指针的能力已被弃用.

  • @Elpezmuerto:因为重新分配`this`指针是没有意义的,这会导致令人难以置信的容易出错的代码.`this`应该导致成员函数中的"当前对象实例",而不是任何其他东西. (10认同)

Lig*_*ica 6

你误解了报价.

早期版本的C++会让this指针改变; 通过这样做,程序员可以改变方法正在处理的对象.这个功能最终被弃用了,现在用C++来实现const.

不赞成的是this- 指针,而不是它指向的对象 - 是可变的.

this类型,本身仍然非常活跃prvalue T*.(GCC模拟了这种暂时,通过使thisrvalue T* const电流GCC 4.7.0.)

  • @CatPlusPlus:不.**指针**总是为const.记住`T*const`与`T const*`不同. (3认同)
  • 我同意@CatPlusPlus.`this`是一个_prvalue_.它有一个指针类型,即非类型,因此它不能被cv限定.在T的非const成员函数中,`this`的类型是`T*`,而不是`T*const`.你无法改变它的事实是因为它是一个_prvalue_,而不是因为它不是`const`. (2认同)

小智 6

根据您的编辑,维基百科的文章措辞不佳.this不推荐使用,只是允许this更改允许指针的功能.该关键字this仍然存在.

来自Stroustrup本人:

为什么"这个"不是参考?

因为在添加引用之前,"this"被引入到C++中(实际上是带有Classes的C语言).另外,我选择"this"来跟随Simula的使用,而不是(后来)Smalltalk使用"self".