Вівторок, 16.04.2024, 21:24
Гость

Мішатронік

Мобільна версія | Додати у вибране  | Мій профіль | Вихід | RSS |
Меню сайту
Наше опитування
Чи знаєте вы Java
Всього відповідей: 3
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0


Об'єктна модель

Для ефективної роботи з класами на стадії виконання в Qt використовується спеціальна об'єктна модель, що розширює модель C++. Зокрема, додаються такі можливості:

  • деревовидні ієрархії об'єктів;
  • аналог dynamic_cast для бібліотеки, який не використовує RTTI;
  • взаємодія об'єктів через сигнали і слоти;
  • властивості об'єктів.

Багато об'єктів визначаються значенням відразу декількох властивостей, внутрішніми станами і зв'язками з іншими об'єктами. Вони являють собою індивідуальні сутності, і для них не має сенсу операція буквального копіювання, а також поділ даних в пам'яті. В Qt ці об'єкти успадковують властивості QObject.
У тих випадках, коли об'єкт потрібно було б розглядати не як сутність, а як значення (наприклад, при зберіганні в контейнері) - використовуються покажчики. Іноді покажчик на об'єкт, що успадковується від QObject, називають просто об'єктом.
Інструментарій спроектований так, що для QObject і всіх його нащадків конструктор копіювання і оператор присвоювання недоступні - вони оголошені в розділі private через макрос Q_DISABLE_COPY ():

 

class FooBar : public QObject
{
private:
 Q_DISABLE_COPY(FooBar)
};

Будьте уважні і не використовуйте конструкцію
Foo bar = Foo (baz);
замість
Foo bar (baz);
Інші об'єкти (наприклад, контейнери і рядки) повністю визначаються уявними даними, тому у відповідних класах є операція присвоювання і конструктор копіювання. Крім того, об'єкти, що представляють однакові дані, можуть прозоро для програміста розділяти їх в пам'яті.

 

 

 

Форма входа
Пошук
Друзі сайту
Календар
«  Квітень 2024  »
ПнВтСрЧтПтСбНд
1234567
891011121314
15161718192021
22232425262728
2930

Єдина Країна! Единая Страна!