Программирование >>  Расширенная версия языка c++ 

1 ... 203 204 205 [ 206 ] 207 208 209 ... 227


624 Самоучитель С++

ГЛАВА 11

Повторение пройденного

1. Виртуальная функция - это функция, которая в базовом классе объявляется с ключевым словом virtual и затем в производном классе подменяется другой функцией. , . . .

2. Чистая виртуальная функция - это функция, которая в базовом классе не имеет определения функции. Это означает, что функция обязательно должна подменяться соответствующей ей функцией в производном классе..Базовый класс, который содержит, по крайнее даре, одну чистую виртуальную функцию, называется абстрактным.

3. Динамический полиморфизм достигается посредством использования виртуальных функций и указателей базового класса.

4. Если в производном классе отсутствует подмена не чистой виртуальной функции, то производный класс будет использовать версию виртуальной

функции из базового класса.

5. Главным преимуществом динамического полиморфизма является гибкость. Главным его недостатком является некоторое снижение быстродействия.

Упражнения 11.1

2. finclude <iostream>

using namespace std; . г

template <class X> mn (X a, X b)

if(a<Kb! return a; ;

else return b;

int main()

cout min(12.2, 2.0) ;

cout endl;

cout min(3, 4); , j л-,. : .-; <.-Л .-о ., . .1

cou endl; ..

cout min (c, a); - . -

return 0;



Приложение В. Ответы на вопросы и решения упражнений 625

3. # include <iostreaiti> -

#include <cstring>

using namespace std;

template <class X> in d(X object, X *list, int size)

int i;

for{i=0; i<size; i++) ;

if (object == list[i]) return i; return -1;

) .- . -

in = {1, 2, 3, 4}; , .

char *С= это проверка ; double d[]={l.l, 2.2, 3.3};

cou find(3, a, 4); cout endl;

cou d(a, c, (int) strlen(c));

cout endl;

cou d{0.0, d, 3);

return 0;

4. Ценность родовхх функций в том, что они позволяют определить общий алгоритм, который можно применить к разным типам данных. (Следовательно, не нужно явно задавать конкретные версии алгоритма.) Кроме этого, родовые функции помогают реализовать основную идею программирования на C++, а именно один интерфейс - множество методов .

11.2

2. Создание родовой очереди ttinclude <iostream>

using namespace std;

tfdefine SIZE 100

template <class (

Qtype queue[SIZE]; содержит очередь

int head, tail; индекс вершины и хвоста очереди

ргдЬИс:

{ head = tail }

voi е num); помещает объект в очередь



626 Самоучитель С++

Qtype deqO; извлекает объект из очереди *., >

Размещение значения в очередь

template <class Qtype> void q type<Qtype>::q(Qtype num} ,.

if (tail+l==head l (tail+l==SIZE &s Ihead)) { cout Очередь полнаХп ;

return;

tail++; -

SIZE) tail = 0; зам1кание цикла queue[tail] = num;

Удаление значения из очереди

template <class Qtype> Qtype q type<Qtype>::deq ()

if (head = tail) {

cout Очередь гг/ста ;

return 0; очередь ста или какая-то иная ошибка

head++;

head = 0; замыкание цикла

return

int main О

I -.у.-. . м г- -.г.

q type<int> ql; > . . t

q type<char> q2; t

- . : с : -.

int i; , . . .. , . . , - -1 . . r. -

ql.q(i); q2.q(i-l+A);

for (i=l; i<10; i+4-) { :i

cou Первая очередь ql.deqO \n ; Jdl- >-cou Вторая очередь qZ.deqO \n ;

return 0;

3. ttinclude <iostream> ,

using namespace std;



1 ... 203 204 205 [ 206 ] 207 208 209 ... 227

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика