C++の型推論を完全解説!autoとdecltypeを初心者でも理解できるように説明
生徒
「C++のコードでautoって書いてあるのを見たんですが、型を書かなくていいんですか?」
先生
「autoは、コンピュータが変数の型を自動で考えてくれる仕組みです。」
生徒
「decltypeというのも見たことがあります。autoと何が違うんですか?」
先生
「型推論という考え方を知ると、その違いが分かります。順番に説明します。」
1. 型推論とは何か
C++の変数とデータ型では、通常、
intやdoubleのように
変数の型を自分で書く必要があります。
しかし、毎回型を書くのは大変なこともあります。 そこで登場するのが型推論です。
型推論とは、「代入された値を見て、 コンピュータが変数の型を判断する仕組み」です。 人でいうと、見た目や中身から 何が入っているかを判断するイメージです。
C++では、型推論を行うために
autoとdecltypeが用意されています。
2. autoの基本的な使い方
autoは、「ここは型を自動で決めてください」 という意味を持つキーワードです。
初心者の方は、 「intの代わりにautoを書ける」 と考えると分かりやすいでしょう。
#include <iostream>
int main() {
auto number = 10;
auto price = 3.5;
std::cout << number << std::endl;
std::cout << price << std::endl;
return 0;
}
10
3.5
この例では、10は整数なのでnumberはint型、 3.5は小数なのでpriceはdouble型として 自動的に決められています。
autoは、値を見て型を決めるため、 必ず初期値を書く必要があります。
3. autoを使うメリット
autoを使う最大のメリットは、 コードが読みやすくなることです。
特に、型の名前が長い場合でも、 autoを使えばシンプルに書けます。
また、型を書き間違えるミスも減ります。 人が考えるよりも、 コンピュータの判断のほうが 正確な場面が多いからです。
ただし、何でもautoにすると、 どんな型なのか分かりにくくなることもあります。 そのため、使いどころを意識することが大切です。
4. decltypeとは何か
decltypeは、「指定したものと同じ型を使う」 という意味を持つ仕組みです。
decltypeは、 「この変数と同じ型を使いたい」 という場面で使われます。
名前は少し難しく見えますが、 「declare type(型を調べる)」 と考えるとイメージしやすくなります。
#include <iostream>
int main() {
int base = 20;
decltype(base) value = 30;
std::cout << value << std::endl;
return 0;
}
30
この例では、baseがint型なので、 valueも自動的にint型になります。
5. autoとdecltypeの違い
autoとdecltypeは、 どちらも型推論ですが、 考え方が少し違います。
autoは「代入される値」を見て型を決めます。 一方、decltypeは「指定した変数や式」を見て そのまま型を取得します。
例えるなら、 autoは中身を見て箱の大きさを決める方法、 decltypeは既にある箱と同じ箱を用意する方法です。
6. 初心者向けの使い分けの考え方
C++の変数とデータ型を学び始めた段階では、 まずはautoを使って、 型推論に慣れることがおすすめです。
decltypeは、 「この変数と同じ型を使いたい」 という明確な目的があるときに使うと、 コードの意味が分かりやすくなります。
autoとdecltypeを正しく理解することで、 C++のコードはより読みやすく、 安全なものになっていきます。