Добавил:
Помощь с лабораторными, контрольными практическими и курсовыми работами по: - Инженерной и компьютерной графике - Прикладной механике Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 сем 1 курс С++ / Экзамен / Lektsii_Kurakina_2_semestr.pdf
Скачиваний:
12
Добавлен:
08.08.2022
Размер:
4.82 Mб
Скачать

Конструкторы

2.1 Конструкторы

Некоторые функции-члены класса являются специальными в том смысле, что они влияют на создание, копирование и уничтожение объектов класса или задают способ приведения значений к значениям других типов. Часто такие специальные функции вызываются неявно. Рассмотрим функцию-конструктор.

Для большинства объектов естественно требовать, чтобы они были инициализированы до начала их использования.

В С++ существуют два способа определить переменную. Можно сначала объявить переменную, а затем (несколько ниже в программе) присвоить ей значение, например:

int Kurs; // объявить целочисленную переменную

Kurs = 2; // присвоить переменной значение

Или, определив переменную, сразу же инициализировать ее, например:

int Kurs = 2; /*определить переменную Kurs и инициализировать значением 2 */

Инициализация объединяет определение переменной с присвоением ей исходного значения, что, однако, ничуть не запрещает изменить это значение впоследствии. Инициализация гарантирует, что переменная никогда не останется без значения. В предыдущем примере переменные объекта класса sum устанавливались «вручную» с помощью функции get_xy():

z.get_xy(x2,y2);

В профессионально написанных программах такой подход все же применяется редко. Для инициализации элементов используется специальная функция, называемая конструктором.

Конструктор специальная функция, являющаяся членом класса и имеющая тоже имя, что и класс. Для конструктора не указывается тип возвращаемого значения (даже void не допустим).

2.2 Пример класса без конструктора

Пример: создать класс, реализующий сумму двух целых чисел

/*Создать класс, реализующий сумму

двух целых чисел */

#include <iostream>

using namespace std;

class sum

{

int x,y,z;

public: void get_xy (int x1, int y1); void summa (void);

};

void sum :: get_xy (int x1, int y1)

{x=x1;

y=y1;}

void sum :: summa (void) {z= x+y; cout<<"Сумма:"<<z;}

int main(int argc, char** argv) { int x2, y2;

sum z;

cout<<"Введите первое слагаемое: \n"; cin>>x2;

cout<<"Введите второе слагаемое: \n"; cin>>y2;

z.get_xy(x2,y2); z.summa(); return 0;

}

2.3 Пример класса с конструктором

#include <iostream>

using namespace std;

class sum

{

int x,y,z;

public:

sum (int x1, int y1);

void summa (void);

};

sum :: sum (int x1, int y1)

{ x=x1;

y=y1;}

void sum :: summa (void)

{z= x+y;

cout<<"Сумма:"<<z;}

int main(int argc, char** argv) {

int x2, y2;

cout<<"Введите первое слагаемое: \n";

cin>>x2;

cout<<"Введите второе слагаемое: \n";

cin>>y2;

sum z(x2,y2);

z.summa();

return 0;

}

Если функция конструктор требует параметр, то в момент создания объекта они должны быть обязательно переданы. Функция конструктор вызывается в момент создания объекта. Если объект локальный, то при входе в блок, если глобальный – один раз при создании объекта в начале программы. Функцию конструктор нельзя вызвать явно.

Класс может иметь несколько конструкторов, различающихся набором аргументов.

Для передачи значений элементам данных объекта с помощью конструктора существует два формата записи:

1.имя класса_ имя объекта = имя конструктора (список аргументов):

sumz = sum(5,7);

2.имя конструктора_ имя объекта (список аргумента):

sumz(5,7);

2.4. Конструктор с параметрами по умолчанию

Конструктор может иметь параметры со значением по умолчанию.

#include <iostream> using namespace std; class sum

{

int x,y,z; public:

sum (int x1=0, int y1=0); void summa (void);

};

sum :: sum (int x1=0, int y1=0)

{x=x1;

y=y1;}

void sum :: summa (void) {z= x+y; cout<<"Сумма:"<<z;}

int main(int argc, char** argv) { int x2, y2;

cout<<"Введите первое слагаемое: \n"; cin>>x2;

cout<<"Введите второе слагаемое: \n"; cin>>y2;

Соседние файлы в папке Экзамен