Class employee

{

public:

employee(char *, char *, float);

void show_employee(void);

private:

char name [ 64 ];

char position[64];

float salary;

};

employee::employee(char *name, char *position,float salary)

{

strcpy(employee::name, name);

strcpy(employee::position, position);

employee::salary = salary;

}

void employee::show_employee(void)

{

cout << "Имя: " << name << endl;

cout << "Должность: " << position << endl;

cout << "Оклад: $" << salary << endl;

}

class manager: public employee

{

public:

manager(char *, char *, char *, float, float, int);

void show_manager(void);

private:

float annual_bonus;

char company_car[64];

int stock_options;

};

manager::manager(char *name, char *position, char *company_car, float salary, float bonus, int stock_options): employee(name, position, salary)

{

strcpy(manager::company_car, company_car);

manager::annual_bonus = bonus;

manager::stock_options = stock_options;

}

void manager::show_manager(void)

{

show_employee();

cout << "Машина фирмы: " << company_car << endl;

cout << "Ежегодная премия: $" << annual_bonus << endl;

cout << "Фондовый опцион: " << stock_options << endl;

}

int main()

{

system("chcp 1251");

employee worker("Савин", "Программист", 35000);

manager boss("Нагель", "Вице-президент", "Ford", 50000.0, 5000, 1000);

worker.show_employee();

boss.show_manager();

system("pause");

}

highlightSyntax('cpp_74170','cpp'); Программа определяет базовый класс employee, затем определяет производный класс manager. Обратите внимание на конструкторmanager. Когда порождается класс из базового класса, конструктор производного класса должен вызвать конструктор базового класса. Чтобы вызвать конструктор базового класса, необходимо поместить двоеточие после конструктора производного класса, а затем указать имя конструктора базового класса с требуемыми параметрами:

manager::manager(char *name, char *position, char *company_car, float salary, float bonus, int stock_options):
employee(name, position, salary) // Конструктор базового класса
 
{
strcpy(manager::company_car, company_car);
manager::annual_bonus = bonus;
manager::stock_options = stock_options;
}

highlightSyntax('cpp_75083','cpp'); Функция show_manager вызывает функцию show_employee, которая является элементом класса employee. Поскольку класс manager является производным класса employee, класс manager может обращаться к общим элементам класса employee, как если бы все эти элементы были определены

внутри класса manager.
Наследование представляет собой способность производного класса наследовать характеристики существующего базового класса. Если есть класс, чьи элементы данных или функции-элементы могут быть использованы новым классом, можно построить новый класс в терминах существующего (базового) класса. Новый класс будет наследовать элементы (характеристики) существующего класса. Использование наследования для построения новых классов сэкономит значительное время. Объектно-ориентированное программирование широко использует наследование, позволяя программе строить сложные объекты из небольших легко управляемых объектов.
Предположим, что используется базовый класс book внутри существующей программы:

class book
 
{
public:
book (char *, char *, int);
void show_book(void);
private:
char title[64];
char author[б 4];
int pages;
};

highlightSyntax('cpp_19506','cpp'); Предположим, что программе требуется создать класс library_card, который будет добавлять следующие элементы данных в класс book:

char catalog[64];

int checked_out; // 1, если проверена, иначе 0

highlightSyntax('cpp_22026','cpp'); Программа может использовать наследование, чтобы породить класс library _card из класса book:

class library_card: public book

{

public:

library_card(char *, char *, int, char *, int);

void show_card(void);

private:

char catalog[64];

int checked_out;

};

highlightSyntax('cpp_65967','cpp'); Следующая программа порождает класс library_card из клacca book:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: