C++で列挙型(enum)を定義する方法を初心者向けに解説
列挙型(enum)とは、任意の型名と、その型の値として使用できる0個以上の識別子の集合を宣言するための機能です。各列挙子(enumerator)は、その列挙型を持つ定数として扱われます。
enumが役立つ場面
enumは、変数が取りうる値の種類があらかじめ決まっている場合に特に便利です。たとえば、「性別」という情報を扱うアプリケーションを作成する場合を考えてみましょう。性別には「男性」「女性」「その他」の3種類があるとします。このようなケースでは、次のようにenumを定義して利用できます。
#include <iostream>
using namespace std;
enum Gender {MALE, FEMALE, OTHERS};
int main() {
Gender gen = FEMALE;
return 0;
}
enumのデフォルト値の仕組み
デフォルトでは、最初の識別子には 0、2番目の識別子には 1、3番目の識別子には 2 というように、先頭から順に1ずつ増加した整数値が自動的に割り当てられます。
ただし、実際のプログラミングにおいて、これらの内部的な数値そのものはそれほど重要ではありません。enumは本質的に「値にシンボル(記号)としての意味を持たせる」ために使われるものだからです。プログラム内でenum同士を比較する際には、実際の数値ではなく、シンボルとしての意味に基づいて判断することになります。
明示的に値を指定することも可能
必要に応じて、列挙子に任意の整数値を明示的に割り当てることもできます。
enum Status {OK = 200, NOT_FOUND = 404, SERVER_ERROR = 500};
モダンC++では「enum class」が推奨
C++11以降では、スコープ付き列挙型である enum class を使うことが推奨されています。従来のenumと異なり、列挙子が外側のスコープを汚染せず、意図しない暗黙の型変換も防げるため、より安全なコードを書くことができます。
enum class Color { RED, GREEN, BLUE };
int main() {
Color c = Color::RED; // スコープ解決演算子(::)でアクセス
return 0;
}
状況に応じて従来のenumとenum classを使い分けることで、可読性と安全性の高いC++プログラムを実現できます。
-
C#で変数を定義する方法とは?基本構文と各型の宣言例をわかりやすく解説
C#における変数の「型」とは C#のすべての変数には、それぞれ特定の「型」が割り当てられています。この型によって、次の3つの要素が決まります。 変数が使用するメモリのサイズとレイアウト そのメモリに格納できる値の範囲 変数に対して実行できる操作(演算)の種類 変数定義の基本構文 C#で変数を定義する際は、以下の構文を使用します。 <data_type> <variable_list>; つまり、「データ型」に続けて「変数名」を記述し、行末にセミコロン(;)を付けます。カンマで区切ることで、複数の変数を一度に宣言することも可能です。 変数定義の具体例 int型の変数を
-
C#で動的データ型(dynamic型)を定義する方法を解説
C#のdynamic型とはC#では、dynamic型の変数に任意の型の値を格納することができます。この型の変数に対する型チェックは、コンパイル時ではなく実行時(ランタイム)に行われるのが大きな特徴です。dynamic型はC# 4.0で導入された機能で、これを使うことでコンパイル時の型チェックを回避できます。実行時に実際の型が判定されるため、柔軟なコーディングが可能になります。dynamic型の宣言方法dynamic型を宣言するための基本的な構文は以下のとおりです。dynamic <変数名> = 値;たとえば、次のように記述します。dynamic a = 25;object型との違い