русс | укр

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

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


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


Деякі рекомендації щодо перезавантаження операцій і перетворення типів. Коли які перетворення використовувати?


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


Як ми вже встановили, якщо перетворення типів передбачене в класі призначення, то слід використовувати конструктор з одним аргументом, а якщо у вихідному класі – то використовується операція перетворення. Який саме спосіб слід вибирати в конкретних випадках? Якщо обидва класи повністю доступні, то можна вибрати будь-який. Але так буває не завжди. Якщо ми купуємо чужу бібліотеку класів, то можемо не мати доступу до її вихідних файлів. Якщо ми будемо використовувати об’єкт такого класу в якості вихідного у перетворенні, то можемо дістати доступ лише до класу призначення, тому використовуватимемо конструктор з одним аргументом. Якщо ж об’єкт призначення належить бібліотечному класу, то ми повинні виконувати операцію перетворення у вихідному класі.

 

«Підводні камені» перезавантаження операцій і перетворення типів

Перезавантаження операцій і перетворення типів дає нам змогу створити, по суті, нову мову. Нехай a, b, c - об’єкти визначеного користувачем класу, а операція + перезавантажена, при цьому рядок

a=b+c;

може означати що-небудь відмінне від того, що було б, якби a,b, c належали до якогось із основних типів. Можливість перевизначення вбудованих блоків мови добра тим, що ми моджемо зробити лістінг програми більш зрозумілим і читабельним. Але можливий і інший результат, коли наш лістінг стане, навпаки, менш зрозумілим і складнішим. Приведемо кілька рекомендацій з цього приводу.

 

Використання схожих значень

Використовуйте перезавантаження операцій для виконання дій, які можна виконати за допомогою основних типів даних. Наприклад, ми можемо перезавантажити знак + для виконання віднімання (матриць, векторів, многочленів і т.д.), але це не зробить наш лістінг зрозумілішим.

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

Вивчаючи цю тему, ми перезавантажили операцію + для об’єктів класу Distance і для рядкового типу String, але навряд чи є сенс додавати об’єкти схожі на раніше використовуваний тип TStudent.

 


<== попередня лекція | наступна лекція ==>
Функція в об’єкті призначення | Використання схожого синтаксису


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