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


 

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

36400. Стандартные сужающие устройства. Основные параметры для расчета сужающих устройств 127.31 KB
  К стандартным сужающим устройствам относятся диафрагмы сопла и сопла Вентури. По двум сторонам диафрагмы располагаются отверстия по средствам которых снимается давление перед и после диафрагмы. Здесь благодаря наличию диффузора потери давления значительно меньше чем у сопла или диафрагмы.
36401. Уровни автоматизации управления 61.35 KB
  Уровни автоматизации управления Уровни автоматизации управления обычно совпадают с принятыми уровнями управления. На предприятии ряда отраслей промышленности в общей смене автоматизированного управления предприятия выделяют 3 уровня: автоматизации управления технологическими процессами; автоматизации управления на уровне производств; автоматизации управления на уровне предприятия. На верхней ступени решаются технические и в основном экономические...
36402. Дайте определение и поясните понятие комплексного коэффициента передачи нелинейного звена 38.1 KB
  Комплексным коэффициентом передачи нелинейного звена называется отношение комплексной амплитуды первой гармоники нелинейного звена к амплитуде входного сигнала. Функции и называются коэффициентами гармонической линеаризации потому что представляют нелинейное звено фиктивным линейным линеаризированным нелинейного звена в частотной области для амплитуды первой гармоники. Они показывают зависимость амплитуды и фазы выходной гармоники нелинейного звена от амплитуды и фазы входного сигнала. Фактически нелинейные звенья с нечетно...
36403. Выведите уравнения гармонического баланса для нелинейной САУ и поясните их 525.87 KB
  Для этого необходимо решить уравнения гармонического баланса. Рассмотрим систему гармонического баланса: баланс амплитуд и баланс фаз Из уравнения баланса фаз определяется частота на которой сдвиг по фазе равен . Далее эта частота подставляется в 1ое уравнения в баланс амплитуд.
36404. Выведите условия возникновения автоколебаний в нелинейной САУ и поясните способ определения их устойчивости по частотному критерию Гольдфарба 969.33 KB
  Выведите условия возникновения автоколебаний в нелинейной САУ и поясните способ определения их устойчивости по частотному критерию Гольдфарба. Для определения устойчивости автоколебаний используется метод Dразбиения в соответствии с которым комплексная плоскость разбивается на 2 зоны: границей Dразбиения будет годограф. Рассмотрим устойчивость колебаний в точке 1 и точке 2. Пусть под действием внешних факторов амплитуда колебаний увеличится тогда по годографу параметры колебаний переместятся влево от точки то есть система окажется в...
36405. Приведите структурные схемы дискретных и цифровых САУ, поясните назначение звеньев и преобразования сигнала 78.25 KB
  Дискретной называется система, которая осуществляет обработку дискретных сигналов. Будем использовать понятия дискретная система и дискретный сигнал как синонимы, и мат. модели цифрового системы и цифрового сигнала с неограниченной разрядностью АЦП и неограниченной точностью обработки.
36406. Приведите классификацию, структурную схему импульсной САУ. Поясните преобразования сигнала при модуляции и демодуляции и формирование закона управления 66.39 KB
  Оно во многих случаях по эффективности совпадает с цифровыми то есть имеет те же преимущества но формирует на объект воздействие импульсное то есть электродвигатели работают в импульсном режиме что дает энергетические преимущества то есть делает САУ экономичными. ИМ импульсный модулятор ВУ вычислительное устройство ИД импульсный демодулятор ИМ импульсный модулятор АИМ: В САУ с АИМ в качестве демодулятора используются электродвигатели исполнительных механизмов которые являются обязательными элементами любой САУ.
36407. Разработайте и поясните эквивалентную расчетную схему дискретной САУ 20.14 KB
  При разработке расчетной схемы будем использовать допущения: Операция квантования по уровню нелинейна = ЦСАУ нелинейна. Операция дискретизации сигнала линейна поэтому в дальнейшем нелинейные ЦСАУ заменим дискретными линейными САУ. В этой схему удобно объединить два блока работающих в непрерывном режиме Получена расчетная схема ЦСАУ эквивалентная по дискретной составляющей исходной САУ с цифровым регулятором. Эта схема позволяет ввести понятие переходной функции ЦСАУ в дискретном пространстве.
36408. Поясните понятие устойчивости дискретной САУ. Дайте классификацию методов определения устойчивости и поясните их 64.92 KB
  Дайте классификацию методов определения устойчивости и поясните их. единичная окружность zплоскости представляет собой границу устойчивости. Такое состояние называется апериодическая граница устойчивости.