Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пример из книги 
V
    Опции темы
yngwie19
Дата 12.6.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Здравствуйте вот пример из книги здесь объясняется механизм свойств, у меня есть несколько вопросов:
user posted image 
Почему тут написано что из программы, мы можем изменить значение нашего свойства так:
Код
pobj->setProperty("readOnly",true)

1) из main() мы этого не зделаем, т.к объект pobj объявлен в конструкторе MyClass. Что имеется в виду
2) поясните пожалуйста эту строчку:
Код
MyClass(QObject *proj = 0) : QObject(proj), m_bReadOnly(false)


зачем нам инициализировать конструктор базового класса QObject что-то Я подзабыл, знаю что это нужно.
PM MAIL   Вверх
ller
Дата 12.6.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

Репутация: 2
Всего: 4



Затем что производный клас, это дополнение базового, и сначало нужни инициализировать базовый клас, а потом спицифичное для потомка.
PM MAIL   Вверх
yngwie19
Дата 12.6.2009, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



ller, это все понятно, но Я не могу себе это представить. При создании объекта производного класса сначала вызывается конструктор базового класса, и что это нам дает?
PM MAIL   Вверх
andrew_121
Дата 12.6.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



yngwie19, На этот вопрос даже отвечать не хочется.
Вот: http://forum.vingrad.ru/index.php?showtopi...t&p=1893904

П.С.
Не нужно дублировать!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
yngwie19
Дата 12.6.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



andrew_121, мне сказали что этот вопрос про конструктор базового класса относится к разделу для новичков, поэтому Я и создал здесь эту тему. А в той теме обсуждается другой вопрос.  
PM MAIL   Вверх
andrew_121
Дата 12.6.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



yngwie19, Ладно.
Но ссылочкой воспользуйся. Твой вопрос про конструкторы и наследование, даже для раздела новичков прост)


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
yngwie19
Дата 12.6.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Можно тогда пояснить про это
Цитата(yngwie19 @  12.6.2009,  13:12 Найти цитируемый пост)
Почему тут написано что из программы, мы можем изменить значение нашего свойства так:

pobj->setProperty("readOnly",true)

из main() мы этого не зделаем, т.к объект pobj объявлен в конструкторе MyClass. Что имеется в виду



Это сообщение отредактировал(а) yngwie19 - 12.6.2009, 14:27
PM MAIL   Вверх
andrew_121
Дата 12.6.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Кто такой pobj, и от кого унаследован твой объект?
Сможешь ответить? Это и есть ответ.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
ller
Дата 12.6.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

Репутация: 2
Всего: 4



И еще не забывай про область видимости, где он объявлен
PM MAIL   Вверх
yngwie19
Дата 12.6.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



посмотрите на картинку, Почему тут написано что из программы, мы можем изменить значение нашего свойства так:
Код

pobj->setProperty("readOnly",true);


PM MAIL   Вверх
mes
Дата 12.6.2009, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(yngwie19 @  12.6.2009,  21:43 Найти цитируемый пост)
посмотрите на картинку, Почему тут написано что из программы, мы можем изменить значение нашего свойства так:

Вы наверно путаете о каком pobj идет речь. Со всем не о параметре передаваемого в конструктор, а о примерно следующем:
Код

QObject * pobj = new MyClass (); 
pobj->setProperty("readOnly",true);



--------------------
PM MAIL WWW   Вверх
yngwie19
Дата 12.6.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



mes, ну понятно значит пример из книги не полный. Этот Шлее очень запутал. Теперь вроде понятно. Осталось только вспомнить зачем при создании объекта производного класса нужно инициализировать конструктор базового класса?

Добавлено через 14 минут и 12 секунд
в принципе в данном примере нет необходимости инициализировать конструктор базового класса, можно записать просто:
Код

MyClass(QObject *proj = 0) :  m_bReadOnly(false)

PM MAIL   Вверх
mes
Дата 13.6.2009, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(yngwie19 @  12.6.2009,  22:10 Найти цитируемый пост)
Осталось только вспомнить зачем при создании объекта производного класса нужно инициализировать конструктор базового класса?

Для того же, для чего чего инициализируется производный. smile
Но мне кажется Вас больше интересует не общий вопрос об инициализации, а зачем в конструктор передается указатель на объект.
Для этого открываем : http://doc.trolltech.com/4.5/qobject.html#QObject и видим что этот параметр означает указатель на предка.
 smile

Добавлено через 3 минуты и 56 секунд
Цитата(yngwie19 @  12.6.2009,  22:10 Найти цитируемый пост)
значит пример из книги не полный. Этот Шлее очень запутал

Шлее тут не причем. Вы запутались потому что акцептировали внимание на названии переменной, которое волей случая оказалось одинаковым у двух объектов, и приняли разные объекты за один.
 smile 


--------------------
PM MAIL WWW   Вверх
yngwie19
Дата 13.6.2009, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



mes, т.е всегда когда мы наследуем от класса QObject, или создаем объект класса QObject, то в качестве параметра создаваемого объекта должны указать адрес родительского объекта, а если его нет то NULL ? 
PM MAIL   Вверх
mes
Дата 13.6.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(yngwie19 @  13.6.2009,  09:03 Найти цитируемый пост)
т.е всегда когда мы наследуем от класса QObject, или создаем объект класса QObject, то в качестве параметра создаваемого объекта должны указать адрес родительского объекта, а если его нет то NULL ?

несколько не так- не должны, а можем : объект класса QObject позволяет задать родителя, если это нужно. Ну а наследникам самим решать оставлять такую возможность или нет smile




--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.