|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.06.2011, 11:27 | #1 |
Пользователь
Регистрация: 01.02.2009
Сообщений: 52
|
Отличие в создании объектов классов в QT Creator
Добрый день! Совсем недавно начала изучать программирование в QT.
Возник вопрос, который наверное больше связан с ООП в С++ чем непосредственно с QT. В чем различие в создании объектов класса: 1 вариант: Код:
Код:
для 1 варианта: Код:
Код:
И еще есть ли книги по программированию в QT кроме М.Шлее "QT4 Профессиональное программирование на С++" и его же книга по QT4.5 (вторая, там еще более тяжело написано, по крайней мере для меня ) Спасибо.
Машины должны работать! Люди должны думать!
|
13.06.2011, 11:48 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
первое это создание объекта в куче, при потери ссылки/указателя на него память зависнет(утечка)
обращатся можно как вы показали, а можно (*btn).show(); второе это создание объекта на стеке, при выходе из функции память будет гарантирована освобождена. но в тоже время переменная существует только внутри функции, указатель на нее, наружу передавать нельзя(можно, но не стоит), внутрь по вызову функций можно в принципе. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
13.06.2011, 14:37 | #3 | |
Участник клуба
Регистрация: 21.03.2010
Сообщений: 1,508
|
Цитата:
Может мне, после обзорного знакомства с программированием на чистом WinAPI, эта книга показалась относительно несложной По-моему проще будет создать видеокурс Qt-программинг для 8-ого класса?! Прошу прощения, за такой ИМХО |
|
13.06.2011, 15:23 | #4 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Создавать в стеке можно только виджеты верхнего уровня, т.е. те, у которых нет предков. Это связано с тем, что в Qt объекты-предки берут на себя освобождение памяти, выделенной под объекты-потомки и это освобождает нас от необходимости вызывать delete для объектов, созданных с помощью new. С другой стороны, если мы создадим виджет в стеке и сделаем его потомком некоторого другого виджета, то удален он будет два раза: в деструкторе объекта-предка и при выходе из области видимости, что приведет к ошибке.
Поэтому все виджеты, кроме виджетов верхнего уровня, должны быть созданы в куче вызовом оператора new. Как создавать виджеты верхнего уровня - решайте сами, но, по-моему, лучше создавать их в стеке.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
14.06.2011, 12:49 | #5 | |
Пользователь
Регистрация: 01.02.2009
Сообщений: 52
|
Спасибо за ответы!
Цитата:
Машины должны работать! Люди должны думать!
|
|
14.06.2011, 13:55 | #6 | |
Участник клуба
Регистрация: 21.03.2010
Сообщений: 1,508
|
Цитата:
Я давно видел Visual Studio - там я не нашёл дизайнера форм, поэтому продолжал изучать Delphi. В Delphi я пробовал писать программы на чистом WinAPI - было тяжело(без дизайнера) - но нужный опыт я получил. Потом, после WinAPI я, открыв книгу Шлее(Qt4) - вспомнил, как я это делал без дизайнера и переключался недолго. Разобравшись с дизайнером - я вообще потерял видимую грань, разделявшую Delphi и Qt. Увидел только преимущество в Qt над Delphi(сигналы и слоты). А у Шлее(Qt4.5) - вообще описан QtCreator(!) - сам Столлман велел брать и писать программы. ЗЫ: замечу, что я один не могу оценить свой уровень в написании программ(дать объективную оценку). Это дело общественности, поэтому всё, что я говорю, считаю уровнем познания новичка. Думаю ответил |
|
14.06.2011, 20:16 | #7 | |||
учу английский...
Форумчанин
Регистрация: 04.04.2009
Сообщений: 480
|
Цитата:
Пример .h Цитата:
Цитата:
"Мы можем что-то изменить и своими силами..."
"Начнешь с себя, примером ближнему поможешь..." |
|||
15.06.2011, 20:44 | #8 |
Пользователь
Регистрация: 01.02.2009
Сообщений: 52
|
xwicked, спасибо за такой полный ответ
У меня изучение было примернов в следующем порядке: Turbo Pascal, C/C++, Delphi (ну и еще параллельно всякие языки, наподобие GPSS, Prolog, G, PHP и т.д.) но изучал не глубоко, наверное поэтому здесь возникли трудности. Разберусь постепенно Нашел по QT интересные уроки на сайте http://doc.crossplatform.ru/
Машины должны работать! Люди должны думать!
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Qt creator 2.0.1 | Hemul | Qt и кроссплатформенное программирование С/С++ | 12 | 26.02.2011 17:48 |
Проблема с созданием двумерного массива из объектов производных классов | Vang | Общие вопросы C/C++ | 15 | 28.05.2010 17:04 |
Чтение/запись объектов классов из/в бинарные файлы | Гром | Общие вопросы C/C++ | 9 | 18.05.2010 22:20 |
Создание классов и использование объектов классов при написании программ в среде C++. | Frozen inside | Помощь студентам | 0 | 16.04.2009 23:18 |