Название: вопрос по ООП в Qt Отправлено: demaker от Апрель 13, 2012, 16:50 Извините за тупой вопрос :)
Вот когда пишут в описание класса(в конструкторе класса) class MyClass: public OldClass { MyClass(QObject *parent = 0); ... } это значит получается у него нет предка ( нулевой указатель) так? Спасибо! Название: Re: вопрос по ООП в Qt Отправлено: demaker от Апрель 13, 2012, 16:55 Нет неправильно выразился - по умолчанию нулевой :)
Название: Re: вопрос по ООП в Qt Отправлено: alexis031182 от Апрель 13, 2012, 17:12 Тут наверное надо определиться для себя в понятиях. На самом деле предком для MyClass является OldClass. А у OldClass, при условии, что тот унаследован от QObject, предком будет ... QObject. Другими словами, для класса родителем является тот класс, который объявлен в частном случае в определении как public.
Что касаемо "QObject *parent", этот случай можно представлять как параллельное наследование или, например, организация некоей взаимосвязи между объектами классов. Даже если в конструкторе MyClass передать NULL, то это не будет означать, что MyClass, а также OldClass не имеют предка QObject, как раз наоборот - имеют. Просто их предок не будет иметь функциональной взаимосвязи с другим объектом класса QObject. Надеюсь, не запутал ещё больше ) Название: Re: вопрос по ООП в Qt Отправлено: Igors от Апрель 13, 2012, 17:22 это значит получается у него нет предка ( нулевой указатель) Слово "предок" употребляют по отношению к иерархии классов, напр OldClass - предок MyClass.Слово "родитель" употребляют по отношению к иерархии объектов, которая поддерживается Qt (но не языком) и в общем случае никак не связана с классами/типами. Невозможно создать объект не имеющий класса/типа, но не имеющего родителя - пожалуйста Название: Re: вопрос по ООП в Qt Отправлено: GreatSnake от Апрель 13, 2012, 17:23 Надеюсь, не запутал ещё больше ) Похоже, что ты сам запутался, т.к. перепутал наследование с иерархией объектов.Название: Re: вопрос по ООП в Qt Отправлено: alexis031182 от Апрель 13, 2012, 17:28 Не перепутал, почему и уточнил по поводу словарных симлинков в самом начале.
Название: Re: вопрос по ООП в Qt Отправлено: cya-st от Апрель 14, 2012, 20:54 Цитировать Надеюсь, не запутал ещё больше ) :o ???Название: Re: вопрос по ООП в Qt Отправлено: alexis031182 от Апрель 15, 2012, 10:52 Название: Re: вопрос по ООП в Qt Отправлено: demaker от Апрель 16, 2012, 13:03 Получается так предок есть, а родителя может не быть.
Я к тому что -> Есть основной поток GeneralThread и в нем создается другой NewThread, но этот другой поток получается создан в основном. А в другом потоке NewThread создается объект newThread_Object. Если я сделаю указатель this при его создании, то к какому потоку он принадлежать? ??? object = new newThread_Object(this); object = new newThread_Object(0); Спасибо! :) Название: Re: вопрос по ООП в Qt Отправлено: Igors от Апрель 16, 2012, 13:27 А в другом потоке NewThread создается объект newThread_Object. Тому же что и родитель, в данном случае главному. Если родитель NULL, то той нитке которая выполняется в данный момент. Вообще для ниток лучше просто ставить родителя NULL, т.к. здесь не UI и от parent-child мало толку - все равно все нитки придется корректно завершать, удалить просто так родителя не получится. А если требуется изменить принадлежность объекта к нитке - используйте moveToThread, это как бы еще одна иерархияЕсли я сделаю указатель this при его создании, то к какому потоку он принадлежать? ??? Название: Re: вопрос по ООП в Qt Отправлено: alexis031182 от Апрель 16, 2012, 13:33 Если в переопределённой функции QThread::run() создать новый объект с указателем this, то будет выведена ошибка. Так делать нельзя. В то же время, можно указать вновь создаваемому объекту this, если это производится, например, в конструкторе унаследованного от QThread класса.
Дополнительно: Потоки, cобытия и объекты QObject (http://habrahabr.ru/post/115830/) Название: Re: вопрос по ООП в Qt Отправлено: demaker от Апрель 16, 2012, 13:52 Спасибо за разъяснения ;)
Название: Re: вопрос по ООП в Qt Отправлено: demaker от Апрель 16, 2012, 14:08 А вот еще такой вопрос.
Прочитал обсуждение по ссылочке http://www.prog.org.ru/index.php?topic=21516.msg149271#msg149271 И не понял ничего, кроме того что в конструкторе класса, унаследованного от абстрактного, нельзя использовать виртуальные методы абстрактного класса. Я прав или нет ??? Название: Re: вопрос по ООП в Qt Отправлено: RealDuke от Апрель 16, 2012, 15:05 А вот еще такой вопрос. хахахахахаха, ну блин вы и жжоте со своими выводами. Советую прочитать http://rutracker.org/forum/viewtopic.php?t=1471956 лучше всю книгу, но если лень то только про конструкторы\деструкторы и виртуальные функции.Прочитал обсуждение по ссылочке http://www.prog.org.ru/index.php?topic=21516.msg149271#msg149271 И не понял ничего, кроме того что в конструкторе класса, унаследованного от абстрактного, нельзя использовать виртуальные методы абстрактного класса. Я прав или нет ??? Название: Re: вопрос по ООП в Qt Отправлено: Igors от Апрель 16, 2012, 15:32 И не понял ничего, кроме того что в конструкторе класса, унаследованного от абстрактного, нельзя использовать виртуальные методы абстрактного класса. Я прав или нет ??? В конструкторах и деструкторах базовых классов будут вызываться виртуалы их (базовых) классов. Несмотря на то что этот конструктор/деструктор зовется из порожденного, тот порожденный или еще не создан или уже разрушен.хахахахахаха, ну блин вы и жжоте со своими выводами. Советую прочитать http://rutracker.org/forum/viewtopic.php?t=1471956 лучше всю книгу, но если лень то только про конструкторы\деструкторы и виртуальные функции. Старая и неплохая книжка, но многое в ней, на мой взгляд, звучит слишком категорично. Типа "никаких исключений. Точка". Хотя для тех кто не любит сомневаться - это наверное самый кайф.А от какого слова "жжоте"? :) Название: Re: вопрос по ООП в Qt Отправлено: RealDuke от Апрель 16, 2012, 15:38 Старая и неплохая книжка, но многое в ней, на мой взгляд, звучит слишком категорично. Типа "никаких исключений. Точка". Хотя для тех кто не любит сомневаться - это наверное самый кайф. Те кто не любит сомневаться, книжек не читают, они и так всё знают :)Название: Re: вопрос по ООП в Qt Отправлено: demaker от Апрель 17, 2012, 09:59 Спасибо ;)
|