Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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; Нарушение авторских прав |