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

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

Страниц: [1] 2 3 4   Вниз
  Печать  
Автор Тема: Почему все объекты qt в динамической памяти?  (Прочитано 27215 раз)
k06a
Гость
« : Сентябрь 28, 2009, 07:29 »

Во всех примерах в документации поля классов представляют из себя указатели на объекты, а не сами объекты. Вопрос: почему? Ответ нужен не мне, а преподавателю.
Записан
Rcus
Гость
« Ответ #1 : Сентябрь 28, 2009, 08:15 »

http://www.prog.org.ru/topic_10166_0.html
Записан
k06a
Гость
« Ответ #2 : Сентябрь 28, 2009, 08:35 »

Мне нужна более весомая причина, желательно от самих разработчиков библиотеки.
Иначе хорошему другу придётся "испоганить" свой код ...
Записан
BlackTass
Гость
« Ответ #3 : Сентябрь 28, 2009, 08:47 »

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

P.S. И вообще, у нас что в России есть вузы где учат куте? эх, почему я  в свое время учился не там(
Записан
Rcus
Гость
« Ответ #4 : Сентябрь 28, 2009, 09:18 »

Мне нужна более весомая причина, желательно от самих разработчиков библиотеки.
Иначе хорошему другу придётся "испоганить" свой код ...
Вам уже назвали причину, какая для вас будет достаточно весомой? Сами разработчики используют еще более жесткие ограничения на использование данных-членов. Погуглите проблемы бинарной совместимости в C++ для профилактики.
Записан
k06a
Гость
« Ответ #5 : Сентябрь 28, 2009, 09:26 »

Друг пишет прогу преподавателю (Долгосрочка такая).
Преподаватель спросил почему там стоят указатели, велел сделать их членами.

Друг пытался аргументировать сови действия тем, что в все примеры в документации сделаны именно так.

"Раньше в документации писали - Земля плоская ..." - ответ преподавателя)))

P.S. Без веского аргумента придется изуродовать код.
Записан
BRE
Гость
« Ответ #6 : Сентябрь 28, 2009, 09:36 »

Друг пишет прогу преподавателю (Долгосрочка такая).
Преподаватель спросил почему там стоят указатели, велел сделать их членами.

Друг пытался аргументировать сови действия тем, что в все примеры в документации сделаны именно так.

"Раньше в документации писали - Земля плоская ..." - ответ преподавателя)))

P.S. Без веского аргумента придется изуродовать код.
Другу нужно сохранить исходники, в том виде как сейчас и начать их править, как сказал преподаватель. Думаю в скором времени он получит много аргументов... А пока преподаватель будет компилировать "улучшенную" версию, у товарища будет достаточно времени попить пивка.  Улыбающийся

2 BlackTass. Ты до сих пор хотел бы учиться в таком вузе (точнее у такого преподавателя)?  Подмигивающий
Записан
ритт
Гость
« Ответ #7 : Сентябрь 28, 2009, 10:59 »

это надо в раздел "юмор" Улыбающийся

а сейчас пишут, что Земля, мол, имеет форму шара, сплюснутого у полюсов. интересно, как он проаргументирует, истинность данного заявления? похоже, он всё ещё придерживается теории плоской Земли Улыбающийся
надеюсь, сий преподаватель читает не программирование...

зы. сделай ему класс с парой сотен объектов, размещённых в стэке, в качестве членов...да по-тяжелее, по-тяжелее Улыбающийся
пущай расскажет почему стало так херово Улыбающийся
« Последнее редактирование: Сентябрь 28, 2009, 11:01 от Константин » Записан
BlackTass
Гость
« Ответ #8 : Сентябрь 28, 2009, 11:07 »

зы. сделай ему класс с парой сотен объектов, размещённых в стэке, в качестве членов...да по-тяжелее, по-тяжелее Улыбающийся
пущай расскажет почему стало так херово Улыбающийся

А еще лучше это в дочернем потоке делать, где стек поменьше

2 BRE. Нет спасибо, я понял свою ошибку) в моем вузе таких преподов не было)
Записан
baka
Гость
« Ответ #9 : Сентябрь 28, 2009, 11:25 »

Да нормальный препод!
Скорей всего это просто провокация с его стороны чтоб побудить студента к исканиям причин, студент под таким "гнетом" лучше разберется в вопросе.

P.S.
Мне бы такого препода, а то у нас тупо Бэйсик отдиктует и уйдет.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Сентябрь 28, 2009, 13:09 »

Во всех примерах в документации поля классов представляют из себя указатели на объекты, а не сами объекты. Вопрос: почему? Ответ нужен не мне, а преподавателю.
Может не стОит переоценивать вопрос? Ответьте просто: указатель более гибок и предоставляет больше возможностей. Например

Код:
class CExample1 {
...
  QWidget * theCenter;
};

class CExample2 {
...
  QWidget theCenter;
};
В первом случае можно использовать любых потомков QWidget, менять их на ходу и т.п.
А во втором случае никаких этих возможностей нет

Присоединяюсь к добрым словам о Вашем преподавателе

Записан
whirlwind
Гость
« Ответ #11 : Сентябрь 28, 2009, 13:26 »

Цитировать
QObject has neither a copy constructor nor an assignment operator. This is by design. Actually, they are declared, but in a private section with the macro Q_DISABLE_COPY(). In fact, all Qt classes derived from QObject (direct or indirect) use this macro to declare their copy constructor and assignment operator to be private. The reasoning is found in the discussion on Identity vs Value on the Qt Object Model page.

The main consequence is that you should use pointers to QObject (or to your QObject subclass) where you might otherwise be tempted to use your QObject subclass as a value. For example, without a copy constructor, you can't use a subclass of QObject as the value to be stored in one of the container classes. You must store pointers.
вдруг поможет
Записан
ритт
Гость
« Ответ #12 : Сентябрь 28, 2009, 13:37 »

Да нормальный препод!
Скорей всего это просто провокация с его стороны чтоб побудить студента к исканиям причин, студент под таким "гнетом" лучше разберется в вопросе.

кстати, да - это бы бы наилучший вариант - если студент перепишет в худшую сторону лишь потому, что "так сказал препод", то учился он зря; иначе он найдёт способ "убедить" препода в его неправоте.
другие варианты не в пользу препода))
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #13 : Сентябрь 28, 2009, 23:54 »

Все преподаватели программирования бараны и недопрограммисты (видел десяток таких), потому что грамотные программисты работают там где платят не учительскую зарплату, а вашему другу лучше сделать так как сказал этот повелитель судеб и не пытаться переубеждать его, иначе не сдаст свою курсовую.
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #14 : Сентябрь 29, 2009, 06:18 »

Да нормальный препод!
Скорей всего это просто провокация с его стороны чтоб побудить студента к исканиям причин, студент под таким "гнетом" лучше разберется в вопросе.
+1

Препод нормальный, а ваш друг .... одним словом - студент. Тупо код переписывает из примеров не вникая в истину. Даже если это не провокация и препод сам не знает как нужно, он правильно делает, что заставляет обосновать своё решение студента и найти истину.
Записан
Страниц: [1] 2 3 4   Вверх
  Печать  
 
Перейти в:  


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