Язык программирования C++. Вводный курс




.Шаблон класса Array - часть 6


/p>

}

Вот что программа выводит при конкретизации шаблона Array типом double:

try_array: начальные значения массива

( 5 )< 12.3, 7.9, 14.6, 9.8, 128 >

try_array: после присваиваний

( 5 )< 14.6, 7.9, 14.6, 9.8, 7.9 >

try_array: почленная инициализация

( 5 )< 14.6, 7.9, 14.6, 9.8, 7.9 >

try_array: после почленного копирования

( 5 )< 14.6, 14.6, 14.6, 9.8, 7.9 >

try_array: после вызова grow

( 8 )< 14.6, 14.6, 14.6, 9.8, 7.9, 0, 0, 0 >

искомое значение: 128      возвращенный индекс: -1

значение элемента с этим индексом: 3.35965e-322

Выход индекса за границу массива приводит к тому, что последнее напечатанное программой значение неверно. Конкретизация шаблона Array типом string

заканчивается крахом программы:

template Array<string> class

try_array: начальные значения массива

( 7 )< Eeyore, Pooh, Tigger, Piglet, Owl, Gopher, Heffalump >

try_array: после присваиваний

( 7 )< Tigger, Pooh, Tigger, Tigger, Owl, Gopher, Eeyore >

try_array: почленная инициализация

( 7 )< Tigger, Pooh, Tigger, Tigger, Owl, Gopher, Eeyore >

try_array: после почленного копирования

( 7 )< Tigger, Tigger, Tigger, Tigger, Owl, Gopher, Eeyore >

try_array: после вызова grow

( 11 )< Tigger, Tigger, Tigger, Tigger, Owl, Gopher, Eeyore, <пусто>, <пусто>, <пусто>, <пусто> >

искомое значение: Heffalump           возвращенный индекс: -1

Memory fault (coredump)

Упражнение 16.11

Измените шаблон класса Array, убрав из него функции-члены sort(), find(), max(), min() и swap(), и модифицируйте шаблон try_array()

так, чтобы она вместо них пользовалась обобщенными алгоритмами (см. главу 12).

Часть V

Объектно-ориентированное программирование

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




Содержание  Назад  Вперед