Когда необходимо использовать “это” ключевое слово в C++? [дубликат]

41
задан Community 23 May 2017 в 12:02
поделиться

7 ответов

Хотя это полностью субъективный вопрос, я думаю, что общее сообщество C ++ предпочитает , а не , чтобы иметь this -> . Он загроможден и совершенно не нужен.

Некоторые люди используют его, чтобы различать переменные-члены и параметры. Гораздо более распространенной практикой является просто префикс ваших переменных-членов чем-нибудь, например, одинарным подчеркиванием или m , или m_ и т. Д.

Это намного легче читать, на мой взгляд. Если вам нужно this -> , чтобы различать переменные, вы делаете это неправильно. Либо измените имя параметра (с x на newX ), либо установите соглашение об именах переменных-членов.

Согласованность предпочтительна, поэтому вместо того, чтобы навязывать это -> себе для нескольких случаев, которые вам нужно различать (обратите внимание, что в списках инициализаторов это полностью четко определено: ] x (x) , где член x инициализируется параметром x ), просто улучшите имена переменных.

Остается единственный раз, когда я использую this : когда мне действительно нужен адрес экземпляра по какой-либо причине.

39
ответ дан 27 November 2019 в 00:39
поделиться

Я могу только вспомнить, как делал это с

delete this;
9
ответ дан 27 November 2019 в 00:39
поделиться

Его можно использовать, когда у вас есть переменные в области «выше» той, с которой вы работаете.

int i;
public void foo() {
    int i;
    i = 3; // assign local variable
    this->i = 4; // assign global variable
}

Помимо доступа к переменным в другой области видимости, я сам согласен с вашим «минималистичным выбором». Меньше - больше. : -)

5
ответ дан 27 November 2019 в 00:39
поделиться

Мне нравится использовать его для пояснения, например, при доступе к унаследованным элементам. Он напоминает читателю, откуда взялась переменная, если у вас нет соглашения об именах, которое передает эту информацию.

Вы должны использовать этот указатель, когда:

  • Возврат текущего объекта.
  • Настройка отношений между объектами (передача this в конструктор или установщик)
  • Проверка на самосылку: this! = ArgPtr
3
ответ дан 27 November 2019 в 00:39
поделиться

Лично я никогда не использую это, за исключением:

  • когда мне нужно передать 'this' в качестве аргумента методу другого класса
  • в реализации оператора присваивания
8
ответ дан 27 November 2019 в 00:39
поделиться

Когда возникает неоднозначность между, скажем, параметром функции и переменной экземпляра.

Конечно, такой двусмысленности следует избегать! Может быть, предпочтительнее изменить имя параметра функции вместо того, чтобы нести накладные расходы (т.е. префиксы) для всех обращений к параметрам экземпляра, хотя...

6
ответ дан 27 November 2019 в 00:39
поделиться

Для я, это зависит от обстоятельств. Если это короткая функция или переменная, я просто ввожу ее (например, mCount). Однако в большинстве случаев я использую очень информативные имена переменных-членов и функций (например, mExclusivelyLockedDigitalIOList). В таких случаях я обычно использую указатель this, чтобы Visual Studio IntelliSense завершила набор текста за меня. Экономия на нажатиях клавиш и орфографических ошибках.

2
ответ дан 27 November 2019 в 00:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: