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


 

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

46023. Основы отношений со СМИ в правовом поле. Ответственность за нарушение прав журналиста и редакции 23.49 KB
  Под массовой информацией понимаются предназначенные для неограниченного круга лиц печатные аудио аудиовизуальные и иные сообщения и материалы; под средством массовой информации понимается периодическое печатное издание радио теле видеопрограмма кинохроникальная программа иная форма периодического распространения массовой информации; Статья 4. Недопустимость злоупотребления свободой массовой информации Не допускается использование средств массовой информации в целях совершения уголовно наказуемых деяний для разглашения сведений...
46025. СЕРТИФІКАЦІЯ ТОВАРІВ І ПОСЛУГ 345 KB
  Товар (процес, послуга), представлений на сертифікацію, відбирається і досліджується органом з сертифікації за певною визначеною схемою (типові випробування зразків продукції, які відібрані в торгівлі або підприємстві виробника, дослідження системи, якості продукції на виробництві та ін.).
46026. Сбытовая политика 26.5 KB
  Сбытовая стратегия это долго и среднесрочные решения по формированию и изменению сбытовых каналов а также процессов физического перемещения товаров во времени и пространстве в рыночных условиях. Задача сбытовой политики управление конкурентоспособностью товара путем управлением каналами сбыта планирование длины ширины и типа посредников; организация и контроль канала управлением товародвижением планирование процессов хранения товаров процессов грузовой обработки товара процессов транспортировки; организация и контроль процессов...
46027. Роль связей с общественностью в современном обществе и в организациях: основные определения public relations; функции PR и их классификация 18.38 KB
  Блэк Функция управления способствующая налаживанию или поддержанию взаимовыгодных связей между организацией и общественностью от которой зависит ее успех или неудача. Одна из главных целей связей с общю корпоративной системы формирование и текущая информационная поддержка её позитивного имиджа. Это осуществляется путем налаживания и оптимизации связей с различными ЦА: представители финансовых и бизнескругов органы власти политич.
46028. Концептосфера текстов песен детских французских поп-групп 81.41 KB
  Концепт имеет определенную структуру, которая является необходимым условием существования концепта и его вхождения в концептосферу. У концепта сложная структура. С одной стороны, к ней относится всё, что принадлежит строению понятия