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


Полезное:

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


Категории:

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






Перегрузка операторов и функций на примере языка С#





(проверить, не доделан)

Перегрузка функций (function overloading) - механизм позволяющий создавать несколько функций, имеющих одинаковое имя, но работающих с разными типами параметров.

 

static int MaxValue(int[] intArray)

{

...

}

static double MaxValue(double[] doubleArray)

{

...

}

Сигнатура функции - это имя и параметры функции.

Возвращаемый тип функции не является частью ее сигнатуры, поэтому определять две функции, отличающиеся только типом возвращаемого значения, нельзя; их сигнатуры считаются идентичными.

При перегрузке функций учитываются все аспекты их сигнатур. Например, может существовать две разных версии функций, принимающие параметры по значению и по ссылке:

static void ShowDouble(ref int val)

{

...

}

static void ShowDouble(int val)

{

...

}

 

Перегрузка операций (operator overloading) - позволяет использовать стандартные операции, такие как +, > и т.д., в классах собственной разработки. “Перегрузкой” этот прием называется потому, что предусматривает предоставление для этих операций собственных реализаций, когда операции используются с параметрами специфических типов.

Операции можно перегружать добавлением в класс членов operator (которые обязательно должны быть static). Некоторые операции обладают несколькими способами применения (как, например, операция -, у которой имеется унарная и бинарная версии), поэтому необходимо указать количество и типы операндов.

 

8. Создание и обработка исключений на пример С++.

(Туривный С.)

 

Для реализации обработки исключений в C++ используйте выражения try, throw и catch.

Сначала используйте блок try для включения одного или нескольких операторов, которые могут создавать исключение.

Выражение throw означает, что исключительное условие, что часто является ошибкой, произошло в блоке try. В качестве операнда выражения throw можно использовать объект любого типа. Обычно этот объект используется для передачи информации об ошибке. В большинстве случаев рекомендуется использовать класс std::exception или один из производных классов, определенных в стандартной библиотеке. Если один из них не подходит, рекомендуется создать собственный производный класс исключений из std::exception.

Для обработки исключений, которые могут быть созданы, необходимо реализовать один или несколько блоков catch сразу после блока try. Каждый блок catch указывает тип исключения, которое он может обрабатывать.

В этом примере показан блок try и его обработчики. Предположим, GetNetworkResource() получает данные через сетевое подключение, а 2 типа исключений являются определенными пользователем классами, производными от std::exception. Обратите внимание, что исключения перехватываются ссылкой const в операторе catch. Рекомендуется создавать исключения по значению и захватывать их ссылкой константы.

 

Пример.

MyData md;
try {
// Code that could throw an exception
md = GetNetworkResource();
}
catch (const networkIOException& e) {
// Code that executes when an exception of type
// networkIOException is thrown in the try block
//...
// Log error message in the exception object
cerr << e.what();
}
catch (const myDataFormatException& e) {
// Code that handles another exception type
//...
cerr << e.what();
}

// The following syntax shows a throw expression
MyData GetNetworkResource()
{
//...
if (IOSuccess == false)
throw networkIOException("Unable to connect");
//...
if (readError)
throw myDataFormatException("Format error");
//...
}

 

Сразу за предложением try находится защищенный раздел кода. Выражение throw вызывает исключение, т.е. создает его. Блок кода после предложения catch является обработчиком исключения. Это обработчик, который перехватывает исключение, вызываемое, если типы в выражениях throw и catch совместимы. Список правил, которыми регулируется сопоставление типов в блоках catch, см. в разделе Проверка блоков Catch (C++). Если оператор catch задает многоточие (...) вместо типа, блок catch обрабатывает все типы исключений. При компиляции с параметром /EHa, в их число могут входить структурированные исключения C и создаваемые системой или приложением асинхронные исключения, например нарушения, связанные с защитой памяти, делением на ноль и числами с плавающей запятой. Поскольку блоки catch обрабатываются в порядке программы для поиска подходящего типа, обработчик с многоточием должен быть последним обработчиком для соответствующего блока try. Используйте catch (...) осторожно, не позволяйте программе продолжать выполнение, если блоку catch не известно, как обработать конкретное перехваченное исключение. Как правило, блок catch (...)используется для ведения журнала ошибок и выполнения специальной очистки перед остановкой выполнения программы.

Выражение throw без операндов повторно создает обрабатываемое в данный момент исключение. Рекомендуется использовать эту форму при повторном создании исключения, поскольку это позволяет сохранить исходные сведения полиморфного типа исключения. Такое выражение следует использовать только в обработчике catch или в функции, вызываемой из обработчика catch. Вновь созданный объект исключения представляет собой исходный объект исключения, а не его копию.

 

(https://msdn.microsoft.com/ru-ru/library/6dekhbbc.aspx)

 

Date: 2015-07-17; view: 678; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



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