既存の型に対してエイリアスをつけるののには
- typedef
- using
の2通りの方法が存在する。
使い方について
例えばintにKUWAGATAという型名をつけて運用したい場合があるとする。
この場合は、
typedef int KUWAGATA
using KUWAGATA = int;
のようにしてエイリアスをつけられる。
使い分けについて
基本的にはusingを使うほうがいい。
理由としては
- 意味の明快さ
エイリアス名 = 元の型のほうがどう考えてもわかりやすいtypedefは英文法のdefine A as B(AをBとみなす)
- 使用範囲が
usingのほうが広い- 例えばテンプレート型のエイリアスは
usingでしかつけられない - こういった場合に「エイリアスを作る記法」として
usingを使うのだから、普通にエイリアスを作りたい場合にも揃えるのが自然なため
- 例えばテンプレート型のエイリアスは
- 特に
typedefを使う利点がないからC++11以降が推奨されているのならなおさら使う理由もない- Cっぽい構造体の書き方とかではたまに見るけど、C++前提なら時代遅れ
- 後方互換性を担保したいような場合もあるので、要件を確認して使い分けたい
typedef struct S_HOGE
{
float fX;
float fY;
float fZ;
} SHoge