Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

08 наследование 2

.pdf
Скачиваний:
13
Добавлен:
27.03.2015
Размер:
349 Кб
Скачать

08 – 1

3.5. Переопределение функций БК в ПК. Пример:

// БК; представляет сотрудника НГТУ

class Worker { protected:

char *fam, *name; public:

Worker(char *, char *); ~Worker();

void print(); };

08 – 2

Worker::Worker(char *f, char *n)

{

fam = new char [strlen(f)+1]; if(!fam) return;

strcpy(fam, f);

name = new char [strlen(n)+1]; if(!name) return;

strcpy(name, n);

}

08 – 3

Worker::~Worker()

{

delete [] fam; delete [] name;

}

void Worker::print()

{

cout << fam << ’ ’ << name;

}

08 – 4

//ПК; представляет преподавателя

//с почасовой оплатой

class Teacher: public Worker {

float

hours;

//

число рабочих часов

float

wage;

//

почасовая ставка

public:

Teacher (char *, char *, float, float);

float getPay();

//

вычисление зарплаты

void print();

//

переопределенная ФЭ

};

 

 

08 – 5

//Конструктор ПК с явным вызовом

//конструктора БК

Teacher::Teacher(char *f, char *n, float h, float w): Worker(f, n)

{ hours = h; wage = w; }

float Teacher::getPay() { return hours * wage; }

08 – 6

// Переопределенная ФЭ БК

void Teacher::print()

{

// Вызов не переопределенной ФЭ БК

cout << ”Worker::print()” << endl; Worker::print();

cout << – преподаватель с оплатой

<<getPay() << ”руб. в неделю

<<endl;

}

08 – 7

int main()

{

Teacher t(”Петров”, ”Иван”, 40., 80.);

t.print(); return 0;

}

08 – 8

Worker::print()

Петров Иван – преподававтель с оплатой 3200 руб.в неделю

08 – 9

3.6.Открытые, защищенные и закрытые БК

1)СТАТУС ЭЛЕМЕНТА БКВНУТРИ ПК

Статус

Тип наследования

элемента в

public

protected

private

БК

public

public

protected

private

protected

protected

protected

private

private

Невидим в

Невидим в

Невидим в

ПК

ПК

ПК

 

2) ПРЯМОЙ И КОСВЕННЫЙ БК

 

08 – 10

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

ПОВЕДЕНИЕ КОНСТРУКТОРОВ:

1)Наследование конструкторов ?

2)Явный и неявный вызов конструктора БК

3)Список инициализаторов элементов

4)Конструктор с умолчанием для БК

5)Конструктор по умолчанию для ПК

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]