多くのプログラマーが最初に突き当たる壁が、「構造体とクラスは何が違うのか」という疑問だ。一言で言えば、それは「余計な荷物を背負っているかどうか」である。
クラスは多くの場合、参照型として扱われ、ヒープメモリと呼ばれる領域に確保される。これにはガベージコレクション(GC)の負荷や、ポインタを辿るためのオーバーヘッドが伴う。一方、構造体は基本的に値型であり、スタックメモリに直接配置されることが多い。この違いが、ミリ秒単位のレスポンスを争う現代のWebサービスや、限られた電力で動くIoTデバイスにおいて、決定的な差を生むのだ。
機能を詰め込んだ豪華な「クラス」という高級外車に対し、「構造体」は無駄を削ぎ落とした軽量なレーシングカーのようなもの。動的な振る舞い(メソッド)を持たせることはできても、継承などの複雑な階層構造を持たないため、バグの温床になりにくいというメリットもある。