Russian Qt Forum
Ноябрь 23, 2024, 20:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Передача по ссылке или указателю?  (Прочитано 20994 раз)
lenny
Гость
« : Август 16, 2011, 10:58 »

Глядя на прототипы методов Qt, не могу понять чем они руководствуются, всегда предполагал, что передача по константной ссылке - уход от копирования объекта, передача по ссылке - объект будет изменен, передача по указателю - указатель будет где-то сохранен.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 16, 2011, 11:02 »

В чем вопрос?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
brankovic
Гость
« Ответ #2 : Август 16, 2011, 12:00 »

Глядя на прототипы методов Qt, не могу понять чем они руководствуются, всегда предполагал, что передача по константной ссылке - уход от копирования объекта, передача по ссылке - объект будет изменен, передача по указателю - указатель будет где-то сохранен.

так в Qt так и есть, какие именно прототипы смущают?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Август 16, 2011, 12:19 »

Глядя на прототипы методов Qt, не могу понять чем они руководствуются
тыц
Записан

Юра.
lenny
Гость
« Ответ #4 : Август 16, 2011, 13:27 »

Глядя на прототипы методов Qt, не могу понять чем они руководствуются
тыц

Спасиб! Написано, что везде указатели при передаче модифицируемых параметров, пригляделся, вроде так и есть.
« Последнее редактирование: Август 16, 2011, 13:28 от lenny » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Август 16, 2011, 14:20 »

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

Что-то в этом "тыц"е старательно замалчивается как они (с наглой мордой) передают/возвращают структуры по значению Улыбающийся Надо понимать что и так ясно - этот стиль "уже хороший"
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #6 : Август 16, 2011, 14:48 »

старательно замалчивается как они (с наглой мордой) передают/возвращают структуры по значению
Можно поподробней?
Записан
lenny
Гость
« Ответ #7 : Август 16, 2011, 16:04 »

Ну это скорее второе. А первое - указатель может быть NULL (и значит вызываемый это учтет), а ссылка нет
Тож верно, я обычно в учет это не беру, лишние проверки, да и указатель все равно может на мусор показывать.
Записан
lenny
Гость
« Ответ #8 : Август 16, 2011, 16:08 »

Можно поподробней?
Так почти все по значению возвращают.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #9 : Август 16, 2011, 16:37 »

Так почти все по значению возвращают.
Вы про классы?
Так подавляющее большинство классов Qt классов - это умный указатель на QИмяКлассаPrivate.
Поэтому на самом деле тут данные не копируются, а передаётся указатель, просто скрыто от вас.
Записан
lenny
Гость
« Ответ #10 : Август 16, 2011, 16:55 »

Честно говоря не знал, надо в исходники заглянуть.
Записан
lenny
Гость
« Ответ #11 : Август 16, 2011, 17:02 »

Вы про классы?
Так подавляющее большинство классов Qt классов - это умный указатель на QИмяКлассаPrivate.
Поэтому на самом деле тут данные не копируются, а передаётся указатель, просто скрыто от вас.

А это как и где на это можно посмотреть? Механизм не понимаю.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #12 : Август 16, 2011, 18:17 »

http://doc.qt.nokia.com/4.7/implicit-sharing.html
И что немаловажно: http://doc.qt.nokia.com/4.7/threads-modules.html#threads-and-implicitly-shared-classes
Записан
lenny
Гость
« Ответ #13 : Август 16, 2011, 18:29 »

В чем вопрос?
Эт у меня мозг вскипел. Сижу, пишу и замечаю, что от меня требуют не константные указатели на не константные объекты и непонятно, что с ними делать будут, типа паранойя началась.
Записан
lenny
Гость
« Ответ #14 : Август 16, 2011, 18:57 »

Здесь об этом немного, но понятно написано http://www.ibm.com/developerworks/ru/library/l-qt_2/
Насколько я понял, при модификации данных глубокое копирование все равно происходит. Или я чего-то не догоняю?
« Последнее редактирование: Август 16, 2011, 19:00 от lenny » Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.093 секунд. Запросов: 23.