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

1 ... 113 114 115 [ 116 ] 117 118 119 ... 227


using namespace std; -

int mainO double *p;

цикл будет продолжаться вплоть до исчерпания ресурса памяти do {

р = new(nothrow) double[100000]; if (р) cout Выделение памяти идет нормальноХп ; else cout Ошибка выделения памятиХп ; } while(р); I-

return 0;

Как показано в этой программе, при использовании оператора new с ключевым словом nothrow, после каждого запроса на выделение памяти следует проверять возвращаемое оператором значение указателя.

УпраАненвя

1. Объясните, в чем разница между функционированием операторов new и new(nothrow), если при выделении памяти происходит ошибка.

2. Дан следующий фрагмент программы. Приведите два переделанных варианта этого фрагмента с учетом современных требований к программам на С++.

р = malloc (aizeof (int) );

if(!p) { -

cou Ошибка выделения памяти\п ; exitd); ,1 .

1вёрнсаусвоения материала главы imi


Теперь вам необходимо выполнить следующие упражнения и ответить на вопросы.

1. Создайте родовую функцию, возвращающую значение элемента, который чаще всего встречается в массиве.



Проверка усвоения

материала в целом

В этом разделе проверяется, хорошо ли вы усвоили материал этой и предыдущей глав.

1. В главе 6, раздел 6.7, пример 3 был представлен класс с безопасным массивом. Переделайте его в родовой класс с безопасным массивом.

2. В главе 1 были созданы перегруженные версии функции abs(). Усовершенствуйте решение, создав родовую функцию abs(), которая возвращала бы абсолютную величину любого численного объекта.

2. Создайте родовую функцию, возвращающую сумму значений элементов массива.

3. Создайте родовой класс для пузырьковой сортировки (или используйте любой другой известный вам алгоритм сортировки).

4. Измените класс stack так, чтобы в стеке можно было хранить пары объектов разных типов.

5. Напишите обычные формы инструкций try, catch и throw. Опишите своими словами их функции.

6. Еще раз измените класс stack так, чтобы переполнение и, наоборот, опустошение стека обрабатывались как исключительные ситуации.

7. Просмотрите документацию на ваш компилятор, Проверьте, поддерживает ли он функции terminateO и unexpected(). Как правило, эти функции

можно конфигурировать так, чтобы из них вы могли вызвать любую необходимую вам функцию. Если в случае с вашим компилятором это так,

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

этого исключительных ситуаций.

8. Философский вопрос: м, по вашему мнению, при неудачной попытке

выделения памяти преимущество возбуждения исключительной ситуации

оператором new по сравнению с возвращением нуля?



. i.: . . . ..L.I

til. ji

iir. ., .if.

, I > . . . :

f

* ill ) ij 1 П . . ;



1 ... 113 114 115 [ 116 ] 117 118 119 ... 227

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