我想知道是否有任何理由明确编写与 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
)的代码。
是否有任何赞成一种方式的共识?