スタイルの問題と言うか、設計の問題と言うか、
前々からどうすべきなのか悩んでいることがあるので
皆さんならどうするのか質問させてください。

class A でコンストラクタで設定するパラメータとして、
多くの場合にはデフォルト値を使用するため、次のようにします。

class A
{
public:
  static const int default_a;
  A(int a = default_a) : a_(a) {}
private:
  int a_;
};

他のクラスBやCでも同じようにします。
すると、このdefault_aとかdefault_bとかはほとんど変更しないため、
結果的にあちこちのクラスに定数が散らばってしまうことになります。
これの何が問題なのかというと、
結局クラスを利用する側ではほとんどデフォルト値だけを使用して、
たまにプログラム全体の挙動を変更させたい場合にだけ、
default_aとかの値自体を変更してコンパイルし直して
テストしたりするわけです。
その場合に、あちこちのファイルに回って、
default_hogeを変更するのが面倒だなあ、と。