ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

#defineよりconst,enum,inline

Effective C++第1章2項
#defineよりもconstを使ったほうがよいというのは知っていたが、#defineよりもconstのほうがメモリを食ってしまうのではないかと思っていたがそれは間違い。constのほうがメモリも少なくてもすむ場合が多い。
#defineである定数を定義した場合、そのシンボル名はコンパイル前に定数に置き換えられる。つまりその定数のコピーがいくつもできてしまう。これがconstを使った場合は1個で済む。
以下、constを使った例。

const int PlayerNum = 2;
const char* const PlayerName = "Player";
const std::string PlayerName("Player");

class Test
{
private:
  static const int TestNum = 5; // これはクラス内でのみ有効な定数
};