Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Что такое пперечисления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как ускорить работу? http://www.cyberforum.ru/cpp-beginners/thread1032031.html
Прога ещё не доработана, сейчас интересует именно графический режим, когда нажимается клавиша 1-4 один из 4-х квадратов должен подсвечиваться красным, так то оно всё работает, но что бы оно...
C++ Исключения и проверка ввода Вот прочитал вчера много всего про исключения в с++, посмотрел несколько видеоуроков, все равно никак не пойму, какой выигрыш от исключений. Допустим мне надо проверить, чтобы пользователь вводил в... http://www.cyberforum.ru/cpp-beginners/thread1032002.html
Банкомат C++
заданиеВ некотором государстве в обращении находятся банкноты определенных номиналов. Национальный банк хочет, чтобы банкомат выдавал любую запрошенную сумму при помощи минимального числа банкнот,...
Лицензия и пробный период C++
Здравствуйте, хотелось бы узнать как реализовать пробный период а так же проверку лицензионного ключа на С++. Получил лабораторную работу в которой необходимо написать программу которая бы давала...
C++ Работа со строками в C++ http://www.cyberforum.ru/cpp-beginners/thread1031975.html
Возникла пара вопросов (только начинаю осваивать С++) Тут ниже задание: Задание 8 При вводе текста программа автоматически должна осуществлять перенос слов. Производится подсчет введенных...
C++ Сформировать двумерный массив. Удалить из него все строки в которых встречается заданое слово #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <limits.h> #define ROWS 100 #define COLS 100 int delete_stroka(int** arr,int N,int M); int main(void) { int sum = 0; подробнее

Показать сообщение отдельно
Yanush
159 / 156 / 46
Регистрация: 28.09.2013
Сообщений: 288
Завершенные тесты: 1
07.12.2013, 16:35
Задавать такие вопросы на форуме это печаль, ибо для этого есть куча соответствующей литературы и поисковые системы (в том числе поиск по форуму)

http://www.softsvet.ru/2007/08/07/perechislenija_v_jazyke_s.html

И вот ещё откуда-то ©
Кликните здесь для просмотра всего текста
Перечисления со строгой типизацией [править]
В стандартном C++ перечисления не являются типобезопасными. В действительности они представлены целыми числами, несмотря на то, что сами типы перечислений различны между собой. Это позволяет производить сравнения между двумя значениями из разных перечислений. Единственной возможностью, которую предлагает C++03 для защиты перечислений, является запрет на неявное преобразование целых чисел или элементов одного перечисления в элементы другого перечисления. Кроме того, способ представления в памяти (целочисленный тип) зависит от реализации и поэтому не является переносимым. Наконец, элементы перечислений имеют общую область видимости, что приводит к невозможности создания элементов с одинаковым именем в разных перечислениях.
C++11 предлагает специальную классификацию этих перечислений, свободную от вышеописанных недостатков. Для описания таких перечислений используется объявление enum class (также возможно использование enum struct в качестве синонима):
enum class Enumeration {
Val1,
Val2,
Val3 = 100,
Val4, /* = 101 */
};
Такое перечисление является типобезопасным. Элементы классового перечисления невозможно неявно преобразовать в целые числа. Как следствие, сравнение с целыми числами также невозможно (выражение Enumeration::Val4 == 101 приводит к ошибке компиляции).
Тип классового перечисления теперь не зависит от реализации. По умолчанию, как в случае выше, таким типом является int, но в иных случаях тип может быть задан вручную следующим образом:
enum class Enum2 : unsigned int {Val1, Val2};
Область действия элементов перечислений определяется областью действия имени перечисления. Использование имён элементов требует указания имени классового перечисления. Так, например, значение Enum2::Val1 определено, а значение Val1 — не определено.
Кроме того, C++11 предлагает возможность указания явной области видимости и низлежащего типа и для обычных перечислений:
enum Enum3 : unsigned long {Val1 = 1, Val2};
В данном примере имена элементов перечисления определены в пространстве перечисления (Enum3::Val1), но для обеспечения обратной совместимости имена элементов также доступны в общей области видимости.
Также в C++11 возможно предварительное объявление перечислений. В предыдущих версиях С++ это было невозможным, поскольку размер перечисления зависел от его элементов. Такие объявления можно использовать только в тех случаях, когда размер перечисления указан (явно или неявно):
enum Enum1; // неверно для C++ и C++11; низлежащий тип не может быть определён
enum Enum2 : unsigned int; // верно для C++11, низлежащий тип указан явно
enum class Enum3; // верно для C++11, низлежащий тип — int
enum class Enum4 : unsigned int; // верно для C++11.
enum Enum2 : unsigned short; // неверно для C++11, поскольку Enum2 ранее объявлен с иным низлежащим типом
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru