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


 

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

45846. Модельный комплект 18.2 KB
  Конструкция модели должна обеспечивать быстрое удаление модели из формы без разрушения. величина усадки сплава выраженная в процентах серый чугун – 1 цветные сплавы – 15 углеродная сталь – 2 ; формовочные уклоны на поверхностях перпендикулярных плоскости разъёма по ГОСТ 3212 для удобства извлечения модели из плоскости формы без разрушения; галтели скругления в местах сопряжения стенок и ребер величина которых зависит от толщины сопрягаемых стенок; знаковые части модели которые не участвуют в создании конфигурации отливки...
45847. Центробежное литьё (технология) 26.5 KB
  Этот способ применяют в настоящее время преимущественно для изготовления отливок представляющих собой тела вращения втулки трубы шестерни биметаллические втулки и т.За счёт вращения изложницы достигается высокая плотность отливки. возможно изготовление тел вращения а также изза ликвации { неоднородное старение }. Центробежное литьё получается на машинах с вертикальной и горизонтальной осью вращения.
45848. Сущность процесса ГОШ, оборудование, преимущества и недостатки, область применения 12.73 KB
  После калибровки точность поковок такая же как при мех. при штамповке увеличивается производительность труда до 800 поковок в смену. в противном случае размеры поковок выходят за требования чертежа. Процесс изготовления штамповых поковок: резка проката на мерные заготовки делается на прессножницах хладноломах пилами электромеханическая и газопламенная резка.
45849. Свободная ковка 156.88 KB
  Свободной ковкой можно получать поковки от самых малых размеров до самых крупных массой до 250–300 т. Этим способом изготавливают поковки простой формы. Осадку применяют для увеличения площади поперечного сечения поковки. Раскаткой изготовляют поковки колец а протяжкой на оправке поковки сосудов высокого давления стволов орудий и др.
45850. Этапы проектирования штампованных поковок, получаемых ГОШ вдоль оси заготовок на молотах и КГШП 17.44 KB
  Автоматизированное рабочее место АРМ или в зарубежной терминологии рабочая станция worksttion представляет собой место пользователяспециалиста той или иной профессии оборудованное средствами необходимыми для автоматизации выполнения им определенных функций. Автоматизированное рабочее место АРМ определяется как правило совокупностью технических средств и программных средств. В качестве технических средств преимущественно используется ПК дополняемый по мере необходимости другими вспомогательными электронными устройствами:...
45851. Холодная штамповка. Операция вытяжка в листовой штамповке 42.56 KB
  Холодная штамповка имеет ряд преимуществ: отсутствует операция нагрева металла; поверхностный слой металла не окисляется отсутствует окалина; изделия получаются более точными по размерам и с меньшей шероховатостью поверхности. По сравнению с обработкой резанием холодная штамповка позволяет значительно сократить расход металла уменьшить трудоемкость изготовления изделий повысить производительность. Изготавливаемая вытяжкой деталь в зависимости от ее глубины и пластических свойств металла может быть изготовлена одной вытяжной...
45852. Сварка металлов 19.26 KB
  Основные виды сварки термического класса: Дуговая сварка – сварка плавлением при которой нагрев осуществляется электрической дугой. Особым видом дуговой сварки являются плазменная сварка при котором нагрев осуществляется сжатой дугой. Газовая сварка – сварка плавлением при которойкромки соединяющихся частей нагревают пламенем газов сжигаемых на выходе горелки для газовой сварки.
45853. Порошковая металлургия 17.54 KB
  Порошковая металлургия -– это отрасль технологии занимающаяся изготовлением изделий из порошков металлов их окислов и смесей металлических и диэлектрических порошков. Методы и средства технологии порошковой металлургии или технологии металлокерамики как ее называют отличаются высокой экономичностью при изготовлении изделий позволяют получать материалы и детали характеризующиеся высокой механической прочностью жаростойкостью и особыми физикомеханическими свойствами. Порошковой металлургией изготавливают алмазнометаллические материалы...
45854. Основные понятия и определения. Механизация и автоматизация производства. Виды автоматизации производства 13.22 KB
  Механизация и автоматизация производства. Виды автоматизации производства. АПП развивается в направлении создании автоматизированных и автоматических систем машин и систем управления ими на разных уровнях производства. Автоматизация развивается одновременно с комплексной механизацией возникает и базируется на основе комплексномеханизированного производства.