ぜんぜん違いますよ。

Effective C++ はこう。

class Month{
public:
  static const Month Jan() { return 1; }
  static const Month Feb() { return 2; }
  static const Month Mar() { return 3; }
private:
  Month(int number) : monthNumber(number) {}
  const int monthNumber;
};

倉薫本を読んだ人間は、こう。

class Month{
private:
  enum e_month{JAN,FEB,MAR};
public:
  static const Month Jan() { return JAN; }
  static const Month Feb() { return FEB; }
  static const Month Mar() { return MAR; }
private:
  Month(enum e_month number) : monthNumber(number) {}
  enum e_month monthNumber;
};

別にたいしたこっちゃないっす。ソース内にマジックナンバーが
堂々と入っているという問題点を修正しただけといってしまえば、
それだけなんですけど。
それだけなんですけど、そこに意味があるんすよ。
すくなくとも、「Effctive C++ を否定しているわけではない」
と言う点だけは誤解しないで欲しいです。

あと、読みもせずに倉薫本を否定するのも止めて。読んだ上で
否定するならともかく。