C++でプログラミングするときに
定数ってどうしてる?

#define TIMER_INTERVAL 300
みたいに書くと、
・大文字と_であらわすことになる
・型が指定できない
・プリプロセッサで置換処理が行われる
・クラス内だけで使うとしてもファイルスコープでグローバル扱い
・ヘッダで値を見ることになる

一方で
class CMyClass
{
staitc const int c_iIntervalTimer;
};

const int CMyClass::c_iIntervalTimer = 300;

みたいだと、
・2箇所書かなければならない
・型を指定できる
・ソースファイルで値を見ることになる
・大文字と小文字を混ぜて書ける

っていう特徴があると思うんだけど
どっちがいいんだろう。