Пространства имен, исключения и шаблоны

Цель этой статьи

В этой статье моя цель - показать вам некоторые продвинутые техники в C ++.

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

Пространство имен

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

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

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

Этот код будет работать отлично. У нас есть два разных пространства имен Умножить и Добавить, в каждом есть функция с одинаковым именем и параметрами, но они делают разные вещи в теле функции.

Чтобы создать пространство имен, вы просто напишите пространство имен NAME {…}, где NAME будет именем пространства имен. , а функции / переменные этого пространства имен заключаются в скобки.

Чтобы получить доступ к функции из пространства имен, вы можете просто написать NAME :: FUN, где FUN - это имя функции. Мы делаем то же самое, когда записываем вещи: std - это пространство имен, а cout - это имя функции, которую мы вызываем каждый раз (std :: cout ).

Исключение

Базовый тип исключения может быть расширен для написания собственных исключений.

Перезапись метода what () для std :: exception дает вам возможность предоставить более подробную информацию о вашем исключении.

Кроме того, если у вас есть функция, которая может генерировать множество разных исключений, вы можете использовать несколько исключений с несколькими командами catch (…) {…} для выявления проблем в вашем коде.

Шаблон

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

В качестве примера предположим, что вам нужна функция, которая суммирует два числа.

Это отлично работает с int s, но если вы зададите какой-либо другой тип этой функции, это приведет к сбою программы или, в худшем случае, округление числа без вашей подготовки.

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

Вот пример шаблона:

Если абстрактный тип для параметров и тип вывода называется T, это произвольно, а также вы можете добавить в шаблон дополнительные типы, например template ‹ класс T1, класс T2 и т. д..

Как видите, когда вы вызываете шаблон или создаете класс шаблона, вам нужно определить, какой тип абстрактных переменных попадет внутрь, вызов выглядит так: func ‹…› (…) . Обратите внимание, что абстрактные типы можно объявлять двумя способами: с помощью typename или class. Подобно template ‹class T› или template ‹typename T›, они, по сути, делают то же самое, поэтому вы можете просто использовать любой из них.

Резюме

Использование передовых методов всегда может упростить и ускорить работу с C ++. Я надеюсь, что эта статья может помочь вам в этом или побудить вас узнать что-то новое об этом языке.

Автор: Мартин Кондор