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


 

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

36165. Сервосистемы проигрывателя CD. Автофокусировка 124.5 KB
  Глубина резкости объектива d зависит от его числовой апертуры NA Numerical Aperture и от длины волны λ излучения лазера d = λ [2NA2] 1 Числовая апертура объектива определяется выражением: NA = n sinθ 2 где n показатель преломления среды в которой распространяется свет; θ угол под которым виден радиус входного зрачка объектива из точки пересечения его оптической оси с фокальной плоскостью рис. Изображение точки В при наличии астигматизма передается в виде горизонтального В' или вертикального В'' отрезка...
36166. Защита от ошибок в формате CD 52 KB
  Из теории помехоустойчивого кодирования известно что для коррекции t ошибок код должен иметь не менее 2t проверочных символов граница Синглтона. Значит каждый из них может исправить не более двух ошибок. Известно также что максимальное число гарантированно обнаруживаемых ошибок равно числу проверочных символов кода.
36167. SSD (Solid State Drive). Преимущества и недостатки 20.06 KB
  SSD логически эмулирует обычный жёсткий диск HDD и теоретически везде может применяться вместо него. SSD использующие динамическую память DRAM а не флэшпамять часто называются RAMdrive и имеют ограниченное применение например в качестве выделенного диска для файла подкачки ОС. Сердцем SSD является микросхема контроллера которая в первую очередь определяет такие ключевые характеристики SSD как внешний интерфейс быстродействие и энергопотребление. Преимущества и недостатки Преимущества SSD над HDD.
36168. Магнитные головки для записи информации на жесткий диск 112 KB
  Вначале это были монолитные головки. Композитные головки выполнены из феррита на подложке из стекла или твердой керамики и имеют меньшие размеры в сравнении с монолитными. Дальнейшим развитием технологии композитных головок стали так называемые головки MIGтипа MIG Metal In Gap.
36169. Технологии записи на магнитные диски 206 KB
  Домены магнитных материалов используемых в продольной записи располагаются параллельно поверхности носителя. Этот эффект и используется при записи цифровых данных магнитным полем головки изменяющимся в соответствии с сигналом информации. Попытки увеличить поверхностную плотность записи путем уменьшения размеров частиц будут увеличивать отношение размера зоны неопределенности к размеру полезной зоны не в пользу последней и в конце концов неизбежно приведут к так называемому суперпарамагнитному эффекту когда частицы перейдут в однодоменное...
36170. ОПТИЧЕСКИЕ ГОЛОВКИ 260 KB
  Задача эта непростая поскольку большинство оптических элементов адаптировано как правило для работы с излучением только одной длины волны. Вопервых необходимо было обеспечить приемлемое рабочее расстояние объектива при любой длине волны излучения. Вовторых обеспечить компенсацию сферических аберраций также при любой длине волны излучения. Втретьих обеспечить изменение числовой апертуры объектива в зависимости от длины волны проходящего через него света.
36171. SuperAudioCD 87 KB
  Следует заметить что технология одноразрядного квантования используется сейчас и для преобразования звука в других форматах однако там полученный одноразрядный поток в конце концов всетаки приводится к последовательности многоразрядных отсчетов 16 20 24разрядных и в дальнейшем все операции по формированию потока данных перед записью на носитель производятся уже с ними. Этот слой является носителем данных DSD и считывается оптической головкой с числовой апертурой 06 лучом лазера с длиной волны излучения 650 нм. В процессе...
36172. Варианты формата CD 133 KB
  Такая версия компактдиска появилась в 1985 году и получила название CDROM Read Only Memory память только для чтения. Поскольку диск CDROM предстояло использовать в составе вычислительных комплексов различной сложности то для него был разработан специальный дисковод легко вписывающийся в архитектуру компьютера. Дополнительное кодирование в CDROM производится до того как данные поступают на кодер CIRC точно такой же как в системе защиты от ошибок формата CDAudio. В формате CDROM эти 24 символа являются обезличенными и могут нести...
36173. ИЗГОТОВЛЕНИЕ BD-ДИСКОВ 401 KB
  Мастеринг BDдисков Существует три основные технологии мастеринга BDдисков: метод PTM иммерсионный метод и метод записи пучком электронов. Системы EBR Electron Beam Recorder использующие для записи пучок электронов наиболее дороги но позволяют получить очень высокое разрешение.1 иллюстрирует процесс формирования дорожки записи. Такая длина волны близка к длине волны излучения газовых лазеров которые применяются для записи оптических дисков в форматах CD и DVD.