69708

Перевантаження конструкторів

Лекция

Информатика, кибернетика и программирование

Для перевантаження конструктора існують три причини: гнучкість, можливість створення ініціалізованих (не ініціалізованих) об’єктів і конструкторів копіювання. Досить часто об’єкти класу можна створити декількома способами.

Украинкский

2014-10-09

27.5 KB

0 чел.

Тема 8: Перевантаження конструкторів

Конструктори можна перенавантажувати. Фактично їх-то і перенавантажують частіше за все. Для перевантаження конструктора існують три причини: гнучкість, можливість створення ініціалізованих (не ініціалізованих) об'єктів і конструкторів копіювання. Досить часто об'єкти класу можна створити декількома способами. Для кожного з цих способів можна визначити окремий варіант перевантаженого конструктора. Ці варіанти вичерпують всі можливості створити об'єкт — при спробі зробити це непередбаченим способом компілятор не знайде відповідного конструктора і видасть повідомлення про помилку.

Перевантажені конструктори набагато підвищують гнучкість класу. Вони дозволяють користувачу вибирати оптимальний спосіб створення об'єкту.Приклад програми, яка створює клас date для зберігання календарної дати. Туту конструктор перевантажений двічі.

#include <iostream>

#include <cstdio>

using namespace std;

class date

{

int day, month, year;

public:

date(char *d);

date(int m, int d, int у);

void show_date();

};

// Ініціалізація рядком.

date::date(char *d)

{

sscanf(d, "%d%*c%d%*c%d" &month &day &year);

}

date::date(int m, int d, int у)

{

day = d;

month = m;

year = у;

}

void date::show_date() {

cout << month << "/" << day;

cout << "/" << year << "\n";

}

int main()

{

date ob1(12, 4, 2001), ob2("10/22/2001");

ob1.show_date();

ob2.show_date() ;

return 0;

}

В цій програмі об'єкт класу date можна ініціалізувати двома способами. Задавши місяць, день і рік у вигляді трьох цілих чисел або у вигляді рядка mm/dd/yyyy. Обидва способи застосовуються досить часто тому має сенс передбачити два різні конструктори для створення об'єктів класу date.

Цей приклад ілюструє основну ідею, яка лежить в основі перевантажених конструкторів: вони дозволяють вибирати спосіб створення об'єктів, який краще всіх відповідає конкретній ситуації. Наприклад, користувач може ввести дату у вигляді массива s. Цей рядок можна відразу використовувати для створення об'єкту класу date. Для цього абсолютно не вимагається перетворювати її в інший вигляд. Проте, якби конструктор date() би не був перевантажений, рядок довелося б розбити на три цілі числа.

int main()

{

char s[80];

cout << "Введіть нову дату: ";

сіn >> s;

date d(s);

d.show_date();

return 0 ;

}

В іншій ситуації користувачу зручніше ініціалізувати об'єкт класу date трьома цілими числами. Наприклад, якщо дата є результатом якихось обчислень, більш природньо створювати об'єкт класу date за допомогою конструктора date (int, int, int). Отже, у кожному конкретному випадку існує оптимальний варіант. Перевантажений конструктор забезпечує необхідну гнучкість класу, особливо необхідну при створенні бібліотек.


 

А также другие работы, которые могут Вас заинтересовать

52741. Диференційоване навчання в початковій школі 89.5 KB
  Працюючи в школі я впевнилась що особистіснорозвивальна спрямованість освіти реалізація якої є головним завданням сучасної школи неможлива без диференційованого навчання. Головне завдання вчителів початкової ланки не забути жодної дитини дати можливість розкрити все краще закладене природою сімєю школою. Враховуючи те що рівень готовності учнів до навчальної діяльності різний необхідно конструювати диференційовані завдання для школярів з різними навчальними можливостями. Такі завдання мають поєднувати навчальний процес усього...
52742. Формування предметно-культурологічних компетентностей учнів через моделювання культурно-освітнього середовища 139 KB
  предметнокультурологічних компетентностей учнів має особливу практичну значущість та дозволяє досягти нової якості освіти. Основна ідея досвіду її інноваційна значущість Формування компетентної особистості учня в процесі вивчення літератури здійснюється через моделювання культурноосвітнього середовища як дидактичної одиниці інноваційного освітнього процесу на засадах поєднання дІяльнісного особистісноорієнтованого компетентнісного підходів шляхом забезпечення міжпредметної інтеграції використання розвиваючих інтерактивних технологій...
52743. Орієнтоване читання як компонент технології розвитку критичного мислення учнів в системі 501.5 KB
  Ефективність А працюють всі учні; Б розвивається логічне мислення; В використання опорних ключових слів в багаткратному повторенні під час уроку полегшує засвоєння матеріалу при виконанні домашніх завдань; Г для здібних учнів залишається простір для самостійного оволодіння додатковою інформацією. А на практиці є учні які приходять на урок без виконаного домашнього завдання які за своїм рівнем відстають від основної групи дітей. Пояснюють факти правила прогнозують наслідки які базуються на отриманих даних Які слова матері...
52744. Інтерактивні уроки історії в навчальному процесі 583 KB
  Втретіх виховується почуття колективізму відповідальності взаємодопомоги поваги до чужої думки бо інколи завдання які розглядаються на таких уроках можуть мати декілька альтернативних варіантів відповіді. Першим завданням як правило є кросворд або чайнворд. На виконання даної роботи відводиться певний час тому за раніше виконане завдання при наявності всіх правильних відповідей присуджується додаткове очко. Зазвичай учень який відповідає призначається вчителем тому навіть слабкі чи не підготовлені до цього уроку школярі...
52745. ІНТЕГРАЦІЙНІ ПРОЦЕСИ НА УРОКАХ СВІТОВОЇ ЛІТЕРАТУРИ 552.5 KB
  Інтеграційні процеси на уроках світової літератури. Автор досвіду ставив мету у даній роботі систематизувати та описати методологію впровадження інтеграційних процесів на уроках світової літератури. Практичне бачення інтеграційних процесів на уроках світової літератури автор відобразив схемами.
52746. Інноваційні технології у формуванні комунікативної компетенції учнів на уроках німецької мови як другої іноземної 378 KB
  В Інноваційні технології у формуванні комунікативної компетенції учнів на уроках німецької мови як другої іноземної У школі не повинні мати місце зайва теоретизація вербальне заучування граматичних положень та правил. Стрімкі зміни що відбуваються в українському суспільстві осучаснення освітньої системи досягнення в галузі практики викладання іноземної мови поставили перед кожним педагогом необхідність оновлення змісту і методів навчання іноземної мови. Це зумовило вибір теми педагогічного дослідження: Інноваційні технології у формуванні...
52747. Люди перестають мислити, коли перестають читати. Інтерактивне навчання 3.76 MB
  На сучасному етапі навчання літератури значну роль відведено вихованню вдумливого читача людини з розвиненим критичним мисленням здатної оцінювати себе і навколишній світ що не можливо без формування базових якостей особистості розвитку її активного начала. Над проблемою Критичне мислення як засіб розвитку творчої особистості учня в процесі соціалізації працюю з 2007 року. У дзеркалі соціології читання відображає наші цінності та погляди стереотипи свідомості та алгоритми мислення реакцію на своє оновлення та духовне...
52748. Біоадекватна технологія як умова розвитку творчого мислення школярів 59 KB
  Проект Концепції літературної освіти в 11річній загальноосвітній школі визначає головною метою літературної освіти виховання читацької особистості з розвиненим естетичним смаком самостійним критичним мисленням гуманістичним світоглядом. Обєкт літературної освіти особистість учня його духовноемоційний світ моральні цінності та орієнтації творче мислення уява читацькі компетенції мовлення. Вивчення літератури за біологічно адекватною технологією БАТ якраз і сприяє розвязанню таких завдань як формування в...
52749. Формування у молодших школярів мотивації до навчання 48.5 KB
  Проблема розвитку мотивації навчання в останній час стає все більш актуальною. свідчать що основи мотивації навчання закладаються у початковій школі тому саме молодший шкільний вік має великі резерви формування мотиваційної сфери учнів. Зусилля практиків та науковців сьогодні спрямовані на дослідження певних організаційних форм та змістових компонентів навчальної діяльності за яких відбувається посилення мотивації навчання що оптимізує весь навчальновиховний процес.