Форум программистов, компьютерный форум CyberForum.ru

Стоит ли избегать указателя this? - C++

Восстановить пароль Регистрация
 
Некий_Чел
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 110
29.01.2016, 11:10     Стоит ли избегать указателя this? #1
Слышал от знакомого, что обращение к полям класса через указатель this трудоёмкая операция и лучше её избегать в программах со сложными вычислениями. Насколько это правдоподобно и почему?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2016, 11:10     Стоит ли избегать указателя this?
Посмотрите здесь:

Копирование указателя С++ C++
C++ Разименование указателя
Преимущества указателя? C++
C++ Сдвиг указателя
C++ Объяснение указателя
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11825 / 6804 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
29.01.2016, 11:16     Стоит ли избегать указателя this? #2
Цитата Сообщение от Некий_Чел Посмотреть сообщение
this трудоёмкая операция и лучше её избегать в программах со сложными вычислениями.
эмммм, что?
Что пишешь this, что нет,
всё равно всё будет через this делаться, просто неявно...
ThePlague
 Аватар для ThePlague
95 / 95 / 59
Регистрация: 30.06.2015
Сообщений: 262
29.01.2016, 11:19     Стоит ли избегать указателя this? #3
Некий_Чел, Указатель this - как и когда его использовать
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,236
29.01.2016, 11:27     Стоит ли избегать указателя this? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Проверяйте c this и без http://bit.ly/1SfhkOH

Насчёт this - то статические анализаторы с++ не любят его и программисты заменяют this на T& self();
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
29.01.2016, 11:42     Стоит ли избегать указателя this? #5
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Насчёт this - то статические анализаторы с++ не любят его
Можно по-подробней?
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,236
29.01.2016, 13:31     Стоит ли избегать указателя this? #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
Можно по-подробней?
C++
1
2
3
4
Foo::Foo : m_hello(this)
{
 
}
Using this in initialization list bla-bla-bla
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
29.01.2016, 14:25     Стоит ли избегать указателя this? #7
rikimaru2013, а где ж такое может понадобиться-то?
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,236
29.01.2016, 14:31     Стоит ли избегать указателя this? #8
gromo, класс-член в композиции нужнается в ссылке на интерфейс, который реализует его родитель.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
29.01.2016, 14:32     Стоит ли избегать указателя this? #9
rikimaru2013, вообще да, обходить такую задачу через self() не самый лучший вариант, просто потому что объект еще не сконструирован и конструктор мембера будет работать с еще не созданным объектом. Другое дело, что может быть необходимо тупо хранить указатель владельца, тогда да.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,236
29.01.2016, 14:35     Стоит ли избегать указателя this? #10
Kastaneda,
я описал реальный случай с жизни) Никто не будет вызывать вирт методы в конструкторе, но передача ссылки на самого себя как класса реализующего нужный интерфейс весьма валидная ситуация. На self не ругнётся с this даст варнинг/еррор в зависимости от уровня
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
29.01.2016, 14:36     Стоит ли избегать указателя this? #11
rikimaru2013, можно название идиомы или подробнее объяснить? Что-то не догоняю что за класс-член
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,236
29.01.2016, 14:40     Стоит ли избегать указателя this? #12
gromo, God class

А если серьйозно, то ощущение, что вы стебётесь и не очень хочется повторять 10 пост и приводить пример ((
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
29.01.2016, 14:46     Стоит ли избегать указателя this? #13
Цитата Сообщение от Kastaneda Посмотреть сообщение
вообще да, обходить такую задачу через self() не самый лучший вариант
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
я описал реальный случай с жизни)
я сам же покритиковал и сам же вспомнил, что в коде, с которым сейчас работаю, полным полно именно этого, и написал это я
Только у меня немного по-другому, вот так

C++
1
2
3
4
class MyClass
{
    MyAnotherClass object = { this };
};
но суть та же.
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
29.01.2016, 14:47     Стоит ли избегать указателя this? #14
rikimaru2013, не стебусь, просто у вас объяснения слишком концентрированные. Ну да ладно, не могу пока представить себе ситуации, где потребовалось бы что-то подобное, поэтому, можно сделать предположение, что это не так уж и нужно.
Kastaneda
29.01.2016, 14:47
  #15

Не по теме:

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
серьйозно
cyberforum же ошибки подчеркивает в поле ввода сообщения

rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,236
29.01.2016, 14:47     Стоит ли избегать указателя this? #16
Kastaneda,
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2016, 19:21     Стоит ли избегать указателя this?
Еще ссылки по теме:

Разыменование указателя C++
C++ Преобразование кода без указателя в код с использованием указателя
Как сделать функцию от указателя на класс и указателя на метод? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
hoggy
5225 / 2116 / 403
Регистрация: 15.11.2014
Сообщений: 4,800
Завершенные тесты: 1
29.01.2016, 19:21     Стоит ли избегать указателя this? #17
Цитата Сообщение от Некий_Чел Посмотреть сообщение
обращение к полям класса через указатель this трудоёмкая операция и лучше её избегать в программах со сложными вычислениями. Насколько это правдоподобно и почему?
это - ложь.

обращение к данным членам экземпляра класса
в любом случае идет через this.

Цитата Сообщение от gromo Посмотреть сообщение
а где ж такое может понадобиться-то?
qt очень любит в конструкторах
прокидывать связи между компонентами,
например.

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Using this in initialization list bla-bla-bla
чотко жеж.

если программист знает что делает,
то ему ничего не мешает
точечно давить предупреждения.
Yandex
Объявления
29.01.2016, 19:21     Стоит ли избегать указателя this?
Ответ Создать тему
Опции темы

Текущее время: 17:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru