C++ の既定の動作と同じことを行うコードを明示的に記述する理由があるかどうか疑問に思っています。
ここにいくつかのコードがあります:
class BaseClass
{
public:
virtual ~BaseClass() {}
virtual void f() { /* do something */ }
};
class ExplicitClass
: public BaseClass
{
public:
ExplicitClass()
: BaseClass() // <-- explicit call of base class constructor
{
// empty function
}
virtual ~ExplicitClass() {} // <-- explicit empty virtual destructor
virtual void f() { BaseClass::f(); } // <-- function just calls base
};
class ImplicitClass
: public BaseClass
{
};
私は主に、リファクタリングとコード ベースの変更の領域に興味があります。多くのコーダーがこのようなコードを書くつもりはないと思いますが、時間の経過とともにコードが変更されると、最終的にこのようになる可能性があります。
に存在するコードを残すことに何か意味はありますExplicitClass
か? 何が起こっているのかを示すというボーナスはわかりますが、糸くずが発生しやすく、危険であると思われます。
個人的には、デフォルトの動作コード ( などImplicitClass
) であるコードを削除することを好みます。
いずれかの方法を支持するコンセンサスはありますか?