C++における予約語(keyword)とは、言語仕様によって特別な意味があらかじめ定義されている単語のことです。
これらの単語はプログラムの構文を構成するために使われるため、変数名・関数名・クラス名などの識別子として使用することはできません。
例えば次のようなコードはコンパイルエラーになります。
int class = 10; // エラー(classは予約語)
ここで class はC++のキーワードであり、クラス定義のために使用されるため、変数名として使うことはできません。
C++の予約語の役割
C++の予約語は、主に次のようなプログラム構造を表現するために使われます。
- 条件分岐
- 繰り返し処理
- 型定義
- クラス設計
- メモリ管理
- 例外処理
- テンプレート
- 名前空間
つまり、C++の文法を構成する基礎となる単語が予約語です。
予約語と識別子の違い
プログラムでは「予約語」と「識別子」が明確に区別されています。
| 種類 | 説明 | 例 |
|---|---|---|
| 予約語 | 言語仕様で意味が決まっている単語 | if, class, return |
| 識別子 | プログラマが自由に名前を付けられる | age, total, myFunction |
識別子は自由に命名できますが、予約語と同じ名前を付けることはできません。
C++の代表的な予約語一覧
C++には多くの予約語がありますが、代表的なものを以下に示します。
alignas
alignof
and
and_eq
asm
auto
bitand
bitor
bool
break
case
catch
char
class
const
constexpr
continue
decltype
default
delete
do
double
else
enum
explicit
export
extern
false
float
for
friend
goto
if
inline
int
long
mutable
namespace
new
noexcept
not
nullptr
operator
or
private
protected
public
register
reinterpret_cast
return
short
signed
sizeof
static
struct
switch
template
this
throw
true
try
typedef
typeid
typename
union
unsigned
using
virtual
void
volatile
while
xor
また、C++11以降では次のようなキーワードも追加されています。
char16_t
char32_t
char8_t
constexpr
consteval
constinit
thread_local
concept
co_await
co_return
co_yield
C++の予約語の主な分類
C++のキーワードは機能ごとに分類すると理解しやすくなります。
制御構文(フロー制御)
プログラムの処理の流れを制御するためのキーワードです。
条件分岐
if
else
switch
case
default
例
if (x > 0) {
return x;
}
else {
return -x;
}
繰り返し処理
for
while
do
例
for (int i = 0; i < 10; i++) {
std::cout << i;
}
ループ制御
break
continue
goto
goto は現在ではほとんど使用されません。
データ型
C++の基本型を表すキーワードです。
bool
char
int
float
double
void
short
long
signed
unsigned
例
int age = 20;
bool flag = true;
オブジェクト指向関連
C++はオブジェクト指向言語であり、クラス設計に関するキーワードがあります。
class
struct
public
private
protected
virtual
friend
this
例
class Person {
public:
int age;
};
メモリ管理
C++では手動でメモリを管理する仕組みがあります。
new
delete
例
int* p = new int;
delete p;
型変換
C++では安全な型変換を行うためのキャスト演算子があります。
static_cast
dynamic_cast
const_cast
reinterpret_cast
例
double x = 3.5;
int y = static_cast<int>(x);
例外処理
エラー処理を行う仕組みです。
try
catch
throw
例
try {
throw 10;
}
catch(int e) {
std::cout << e;
}
テンプレート
型に依存しない汎用コードを書くための機能です。
template
typename
例
template <typename T>
T add(T a, T b) {
return a + b;
}
名前空間
名前の衝突を防ぐための仕組みです。
namespace
using
例
using namespace std;
論理演算の代替キーワード
C++では論理演算子の代替表記が用意されています。
| 記号 | キーワード |
|---|---|
| && | and |
| || | or |
| ! | not |
例
if (a and b) {
}
文脈依存キーワードについて
C++には「完全な予約語」ではなく、特定の文脈でのみ特別な意味を持つ識別子も存在します。
代表例
override
final
import
module
これらは通常の識別子として使用できる場合がありますが、特定の文法の中では特別な意味を持ちます。
予約語に似た名前は使用できる
予約語そのものは使用できませんが、一部を含む名前は問題ありません。
使用可能な例
className
ifFlag
returnValue
使用不可
class
if
return
まとめ
C++の予約語とは
- 言語仕様で特別な意味を持つ単語
- プログラムの構文を構成する要素
- 変数名や関数名として使用できない
主なカテゴリ
- 制御構文
- データ型
- クラス・オブジェクト
- メモリ管理
- 型変換
- 例外処理
- テンプレート
- 名前空間
以上、C++の予約語についてでした。
最後までお読みいただき、ありがとうございました。
