Почему «this» использовалось как неконстантный устаревший в C ++ - PullRequest
0 голосов
/ 26 сентября 2011

Почему this устарел в C ++?Чем указатель this в C ++ отличается от this в Java?

Или Википедия просто неверна

Ранние версии C ++ позволили быэтот указатель будет изменен;тем самым программист может изменить объект, с которым работает метод.Эта функция в конечном итоге устарела, и теперь она в C ++ постоянна.

Ответы [ 3 ]

17 голосов
/ 26 сентября 2011

Я верю, что ваша ошибка в том, как вы интерпретируете эту линию.Они не говорят "Эта функция устарела".Возможность переназначить указатель this устарела.

6 голосов
/ 26 сентября 2011

На основании ваших правок статья в Википедии написана плохо. this не считается устаревшим, просто функция, позволяющая изменять указатель this, устарела. Ключевое слово this все еще существует.

С Сам Страуструп :

Почему «это» не является ссылкой?

Потому что «это» было введено в C ++ (действительно в C с классами) до ссылки были добавлены. Кроме того, я выбрал «это», чтобы следовать Симуле использование, а не (позднее) Smalltalk-использование "self".

6 голосов
/ 26 сентября 2011

Вы неверно истолковали цитату.

Ранние версии C ++ позволили изменить этот указатель;тем самым программист может изменить объект, с которым работает метод.Эта функция в конечном итоге устарела, и теперь она в C ++ имеет вид const.

. Что устарело, так это this - указатель, а не объект, на который он указывает - изменчивость.*this сам по-прежнему очень жив, с типом prvalue T*.(GCC моделирует это в настоящее время, делая this a rvalue T* const в текущем GCC 4.7.0.)

...