既存の型に対してエイリアスをつけるののには

  • typedef
  • using

の2通りの方法が存在する。

使い方について

例えばintKUWAGATAという型名をつけて運用したい場合があるとする。
この場合は、

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