русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Підсумок


Дата додавання: 2014-04-22; переглядів: 923.


Ми дізналися, як надавати новий зміст звичайним операціям С++ при використанні їх з типами, визначеними користувачем. Ключове слово operator використовується для перезвантаження операцій, при цьому операція буде виконувати дії, які визначить для неї програміст.

Перетворення типів близьке до перезавантаження операцій. Деякі перетворення відбуваються між основними типами і типами, визначеними користувачем. При цьому використовуються два підходи: використання конструктора з одним аргументом при зміні основного типу на визначений користувачем і використання операції перетворення при зміні визначеного користувачем типу на основний. Якщо перетворення відбувається між різними типами користувача, то використовують обидва ці підходи.

В таблиці відображені можливі варіанти перетворень.

  Процедура в класі призначення Процедура у вихідному класі
Основний в основний Вбудовані операції перетворення
Основний в клас Конструктор N/A
Клас в основний N/A Операція перетворення
Клас в клас Конструктор Операція перетворення

 


Питання по темі

1. Перезавантаження операцій

а) перетворює операції (operator) C++ для роботи з об’єктами

б) надає операціям С++ більше даних, ніж вони можуть обробити

в) надає нове значення існуючим у С++ операціям

г) створює нові операції С++

 

2. Скільки аргументів потрібно для визначення перезавантаженої унарної операції?

а) жодного

б) один

в) два

 

3. Припустимо, що існує клас С з об’єктами obj1, obj2, obj3. Вираз

obj1=obj2-obj3

працює правильно. Тут перезавантажена операція повинна:

а) приймати два аргументи

б) повертати значення

в) створювати іменований тимчасовий об’єкт

г) використовувати об’єкт, що викликав операцію, як операнд

 

4. Існують два оголошення, призначені для додавання двох об’єктів класу String.

void add(String s1, Strings2);

String operator+(String s)

Імені функції add відповідає:

а) аргумент (s)

б) об’єкт, що викликає операцію

в) операція (+)

г)значення, що повертається (типу String)

д) нема відповідності

 

 

5. Існують два оголошення, призначені для додавання двох об’єктів класу String.

void add(String s1, Strings2);

String operator+(String s)

Повернутому значенню типу void відповідає::

а) аргумент (s)

б) об’єкт, що викликає операцію

в) операція (+)

г)значення, що повертається (типу String)

д) нема відповідності

 

6. Існують два оголошення, призначені для додавання двох об’єктів класу String.

void add(String s1, Strings2);

String operator+(String s)

Першому аргументу s1 відповідає::

а) аргумент (s)

б) об’єкт, що викликає операцію

в) операція (+)

г)значення, що повертається (типу String)

д) нема відповідності

 

7. Існують два оголошення, призначені для додавання двох об’єктів класу String.

void add(String s1, Strings2);

String operator+(String s)

Другому аргументу s2 відповідає::

а) аргумент (s)

б) об’єкт, що викликає операцію

в) операція (+)

г)значення, що повертається (типу String)

д) нема відповідності

 

8. Існують два оголошення, призначені для додавання двох об’єктів класу String.

void add(String s1, Strings2);

String operator+(String s)

J,Об’єкту, що викликає функцію, відповідає::

а) аргумент (s)

б) об’єкт, що викликає операцію

в) операція (+)

г)значення, що повертається (типу String)

д) нема відповідності

 

9. Чи істинне твердження: перезавантажена операція завжди вимагає на один аргумент менше, ніж кількість операндів?

а) так

б) ні

 

10. Коли ви перезавантажуєте операцію арифметичного присвоювання, то результат:

а) передається об’єкту справа від операції

б) передається об’єкту зліва від операції

 

11. Для перетворення від визначеного користувачем класу до основного типу можна використати:

а) вбудовану операцію перетворення

б) конструктор з одним аргументом

в) перезавантажену операцію =

г) операцію перетворення, що є членом класу

 

12. Для перетворення від основного типу до визначеного користувачем класу можна використати:

а) вбудовану операцію перетворення

б) конструктор з одним аргументом

в) перезавантажену операцію =

г) операцію перетворення, що є членом класу

 

13. Чи є істинним твердження: вираз objA=objB буде причиною помилки компілятора, якщо об’єкти належать до різних типів?

а) так

б) ні

в) так, якщо відсутня операція перетворення типів

 

14. Якщо об’єкт objA належить до класу А, об’єкт objectB - до класу B, ми хочемо записати objA=objB і помістити функцію присвоювання в клас А, то який тип процедури можна використати?

а) вбудовану операцію перетворення

б) конструктор з одним аргументом

в) перезавантажену операцію =

 

15. Чи істинний вираз: компілятор не протестуватиме, якщо ми перезавантажимо операцію * для виконання ділення?

а) так

б) ні, але це зробить лістінг програми менш читабельним

 

 


<== попередня лекція | наступна лекція ==>
Використання схожого синтаксису | Курс лекцій


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн