![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Вообщем вот что. Все мы знаем, что в public интерфейсе (С++ класса) лучше использовать ссылки, а не указатели. Ссылки - везде, где это возможно, указатели - только в случае необходимости.
Но последнее время у меня возникает стойкое желание использовать ссылки не только "снаружи", но и "внутри". Пример:
В итоге в методе класса ("внутри") вместо
пишем
Как-то красивше. Единообразный стиль... Кто что думает? -------------------- |
||||||
|
|||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
т.е. у вас это реализовано так:
? up Это сообщение отредактировал(а) andrew_121 - 7.3.2010, 01:08 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
тут несколько другое правило: ссылка если объект "всегда есть" и указатель если "может быть нулем". разгрузка через функцию всегда хорошо.. т.е. чем меньше прямых связей с переменной тем лучше. и не только красиво, но и больше свободы Добавлено через 1 минуту и 36 секунд имхо не правильный акцент на "public " |
|||
|
||||
| andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Угу.
Да, да. Именно это я и имел ввиду.
Собственно, в этом и был вопрос. Просто хотел удостовериться. andrew_121, так тоже можно. Но невсегда. Иногда ведь нужно иметь возможность заNULLить. -------------------- |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
или просто поменять объект. |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
andrew_121, что в твоем коде получится? ссылка на временный обьект?
|
|||
|
||||
| andrew_121 |
|
||||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Alek86, да, все верно.
Добавлено через 4 минуты и 36 секунд вопрос. такой код:
компилятор ругается:
но если ссылка константная:
то все ок. почему так? -------------------- Удалил аккаунт. Прощайте! |
||||||
|
|||||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
в стардарте явно прописано, что в случае, когда временный обьект возвращается в константную ссылку, его жизнь продолжается до того момента, пока не уничтожится эта самая ссылка
но у меня ощущение, что это правило работает только для ссылок-переменных в функциях, и не уверен что твой временный QDialog должен жить до вызова деструктора MainWindow. Возможно то, что не пишется ошибка - бага компилятора а зачем так извращаться? напиши просто:
Это сообщение отредактировал(а) Alek86 - 7.3.2010, 16:31 |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
но работает. хз. в наличии gcc-4.5.0. не самый бажный компилятор. это вопрос к kemiisto) -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Это сообщение отредактировал(а) mes - 7.3.2010, 17:12 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |