Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Будет освобождена при (неявном) вызове деструктора для объекта ip. Заметим





также, что правила распределения памяти С++ гарантируют, что конструктор

Класса X не будет вызван, если для объекта ip не выделено памяти. Таким

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

Вызван деструктор.

СПЕЦИФИКАЦИЯ ИНТЕРФЕЙСА ФУНКЦИИ, ЗАЯВЛЯЮЩЕЙ

ИСКЛЮЧЕНИЯ

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

Учитываться при программировании взаимодействия этой функции с другими

Программными модулями и в первую очередь, вызывающими ее функциями. В

языке С++ заголовок функции включает спецификацию исключений, которые

данная функция может генерировать:

void f(int a) throw(Range, Size, int, char*)

{

// тело функции

}

Здесь указано, что функция f() может заявить (прямо или косвенно) исключения

Четырех заданных типов или производные от них, но не другие. Это

эквивалентно коду функции вида:

void f(int a) {

try {

// тело функции

}

catch(Range()) {

throw; // повторно заявить то же исключение

}

catch(Size()) {

throw; // повторно заявить то же исключение

}

catch(int) {

throw; // повторно заявить то же исключение

}

catch(char*) {

throw; // повторно заявить то же исключение

}

catch(...) {

Unexpected();

}

}

Предполагается, что функция, определяемая без указания спецификации

Исключительных ситуаций, может заявить исключение любого типа. Функция,

Которая не может вообще генерировать исключений, должна описываться с

пустым списком:

int g(void) throw(); // функция не заявляет каких-либо исключений

Спецификация исключения, однако, не контролируется на этапе

Компиляции. Например, код

void f(void) throw(int){ throw “This error message has type char* ”; }

Не вызовет даже предупреждающего сообщения компилятора. Несоответствие

Фактического типа заявленного исключения специфицированным будет

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







Date: 2015-12-12; view: 343; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию