Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СМП Лекция 10.pptx
Скачиваний:
0
Добавлен:
07.07.2024
Размер:
194.13 Кб
Скачать

Пример4 Иерархия классов с

34

виртуальными функциями при

 

наследовании. Продолжение

 

class C : public B { protected :

int c; public :

[virtual] void input() { B :: input();

cout << “ c=“ ; cin >> c;

}

[virtual] int show() { return c; }

};

void output1( A z)

{ cout << z.show () << endl; }

void output2( A & z)

{ cout << z.show () << endl; }

void output3( A * p)

{ cout << p -> show () << endl; }

Пример4 Иерархия классов с

35

виртуальными функциями при

 

наследовании. Окончание

 

void main ()

{ A aa; B bb; C cc;

// определяющим является тип объекта

aa.input();

// ввод a

bb.input();

// ввод a и b

cc.input();

// ввод a, b и c

cout << aa.showall() << endl;

// вывод a

cout << bb.showall() << endl;

// вывод b

cout << cc.showall() << endl;

// вывод c

cout << aa.show() << endl; // вывод a cout << bb.show() << endl; // вывод b cout << cc.show() << endl; // вывод c

//определяющим является тип

//параметра функции

output1(aa);

// вывод a

output1(bb);

// вывод a

output1(cc);

// вывод a

//определяющим является тип

//аргумента (объекта) при вызове функции

output2(aa);

// вывод a

output2(bb);

// вывод b

output2(cc);

// вывод c

output3(&aa);

// вывод a

output3(&bb);

// вывод b

output3(&cc); // вывод c } // конец main()