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). Отже, у кожному конкретному випадку існує оптимальний варіант. Перевантажений конструктор забезпечує необхідну гнучкість класу, особливо необхідну при створенні бібліотек.


 

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

61888. Отряд хищные. Организация групповой деятельности учащихся на уроках биологии 1.51 MB
  Расширить знания о многообразии млекопитающих показать черты приспособленности хищников к их образу жизни, значение их в природе и практическую роль для человека. Отметить более сложную рефлекторную деятельность этих животных. Закрепить понятие о ранее изученных систематических группах.
61889. American writer Mark Twain 38 KB
  Now, please, look at the blackboard. Let’s begin with the words. Listen to me, I will read them: daring boy, to punish, to be sure, to whitewash a fence, to pass, delight, pretend, to show off, straw, to balance, mysteries, hero.
61890. Тотожні перетворення виразів. Подорож стежками Холодного Яру 222 KB
  Подорож стежками Холодного Яру. Подорож стежками Холодного Яру. А тепер попробуємо розкрити таємниці Холодного Яру. Освячений пророчим Тарасовим словом: І повіє огонь новий з Холодного Яру.
61891. Формування ціннісного ставлення до власного здоров’я в учнів молодшого шкільного віку засобами використання здоров’язберігаючих технологій 16.4 MB
  Освітня: Формувати в дітей поняття про життя як вищу цінність, про здоров’я як найважливішу умову щасливого життя; мотивувати в учнів свідоме ставлення до власного здоров’я; формувати у дітей прагнення до спостереженням за станом свого здоров’я...
61892. Художники и зрители 50.5 KB
  Перед вами картина известного французского художника Ван Гога. Перед вами картина известного русского художника Михаила Врубеля. Вот такая картина рисуется в воображении благодаря искусному изображению художника. Вот ещё одна картина.
61893. Цели и задачи уроков права 66 KB
  ОБУЧАЮЩИЕ: знакомить учащихся с наиболее распространенными и доступными понятиями и формировать у них элементарных представлений об обществе в целом и их малом сообществе Дать: представления о различных источниках благосостояния представление о различных способах размещения и использования ресурсов и об их влиянии на состояние человека общества и окружающей среды; учащимся специальные знания Научить: понимать необходимость существования в обществе различных норм и законов их функции и значения; почему различные ситуации...
61894. Виховна година: “Цигарка - ворог, зброя проти неї - ваша воля” 47.5 KB
  На думку одного психіатра люди палять не тому що хочуть палити а тому що не можуть перестати. Як можна відмовитися від паління перестати палити Насамперед треба спробувати розірвати коло дуже міцних рефлекторних звязків.
61895. Разработка стратегии вывода нового для рынка России товара компании Christ в интересах получения эксклюзивного дилерства в условиях ограниченного инвестиционного ресурса 3.64 MB
  В советское время развитие конного спорта находилось под государственным контролем и управлялось централизованно. Для широкой массы не представлялось возможнымприобрести лошадь и заниматься любительским конным спортом, так как государство ограничивало права иметь лошадь в частной собственности. Таким образом, рынок коневодства и конного спорта отсутствовал полностью. Культура конного спорта не развивалась в принципе.
61896. ОПЕРАТОРИ ЦИКЛУ 93.5 KB
  Призначення операторів циклу. Кожний з трьох засобів організації циклу має свої особливості для кожного засобу є своє коло задач які найбільш природно вирішуються саме з його допомогою.