Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Представление о конструкторе




Конструктор представляет собой специальную функцию, которую C++ автоматически вызывает каждый раз при создании объекта. Обычное назначение конструктора заключается в инициализации элементов данных объекта. Конструктор имеет такое же имя, как и класс. Например, класс с именем file использует конструктор с именем file. Вы определяете конструктор внутри своей программы так же, как и любой метод класса. Единственное различие заключается в том, что конструктор не имеет возвращаемого значения. Когда вы позже объявляете объект, вы можете передавать параметры конструктору, как показано ниже:

class_name object(valuel, value2, value3)

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

Как вы уже знаете из урока 15, C++ позволяет указывать значения по умолчанию для параметров функции. Если пользователь не указывает каких-либо параметров, функция будет использовать значения по умолчанию. Конструктор не является исключением; ваша программа может указать для него значения по умолчанию так же, как и для любой другой функции. Например, следующий конструктор employee использует по умолчанию значение оклада равным 10000.0, если программа не указывает оклад при создании объекта. Однако программа должна указать имя служащего и его номер:

employee::employee(char *name, long employee_id, float salary = 10000.00)

{
strcpy(employee::name, name);
employee::employee_id = employee_id;
if (salary < 50000.0)
employee::salary = salary;
else // Недопустимый оклад
employee::salary = 0.0;
}

Перегрузка конструкторов

Как вы уже знаете из урока 13, C++ позволяет вашим программам перегружать определения функций, указывая альтернативные функции для других типов параметров. C++ позволяет вам также перегружать конструкторы. Следующая программа CONSOVER.CPP перегружает конструктор employee. Первый конструктор требует, чтобы программа указывала имя служащего, номер служащего и оклад. Второй конструктор запрашивает пользователя ввести требуемый оклад, если программа не указывает его:

employee::employee(char *name, long employee_id)

{
strcpy(employee::name, name);
employee::employee_id = employee_id;
do

{
cout << "Введите оклад для " << name << " меньше $50000: ";
cin >> employee::salary;
}
while (salary >= 50000.0);
}

Внутри определения класса программа должна указать прототипы для обоих конструкторов, как показано ниже:

class employee

{
public:
employee (char *, long, float);|___ Прототипы перегруженных
employee(char *, long); |функций
void show_employee(void);
int change_salary(float);
long get_id(void);
private:
char name [64];
long employee_id;
float salary;
}

Ниже приведена реализация программы CONSOVER.CPP:

#include <iostream.h>

#include <string.h>

class employee

{
public:
employee(char *, long, float);
employee(char *, long);
void show_employee(void);
int change_salary(float);
long get_id(void);
private:
char name [64];
long employee_id;
float salary;
};

employee::employee(char *name, long employee_id, float salary)

{
strcpy(employee::name, name);
employee::employee_id = employee_id;
if (salary < 50000.0) employee::salary = salary;
else // Недопустимый оклад
employee::salary = 0.0;
}

employee::employee(char *name, long employee_id)

{
strcpy(employee::name, name);
employee::employee_id = employee_id;
do

{
cout << "Введите оклад для " << name << " меньше $50000: ";
cin >> employee::salary;
}
while (salary >= 50000.0);
}

void employee::show_employee(void)

{
cout << "Служащий: " << name << endl;
cout << "Номер служащего: " << employee_id << endl;
cout << "Оклад: " << salary << endl;
}

void main(void)

{
employee worker("Happy Jamsa", 101, 10101.0);
employee manager("Jane Doe", 102);
worker.show_employee();
manager.sbow_employee();
}

Если вы откомпилируете и запустите эту программу, на вашем экране появится запрос ввести оклад для Jane Doe. Когда вы введете оклад, программа отобразит информацию об обоих служащих.





Поделиться с друзьями:


Дата добавления: 2016-12-17; Мы поможем в написании ваших работ!; просмотров: 304 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наглость – это ругаться с преподавателем по поводу четверки, хотя перед экзаменом уверен, что не знаешь даже на два. © Неизвестно
==> читать все изречения...

2613 - | 2186 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.