派生函数中的NULL实现

NULL implementation in derived function

本文关键字:NULL 实现 函数 派生      更新时间:2023-10-16

在我的设计中,我从一个公共类(Base1)派生了三个类(Der1, Der2, Der3)其中2/3的类对虚函数f1()有相同的实现。即f1()Der1Der2共享相同的实现,而Der3没有实现。

所以我在Base1Der3中保持f1()实现,我用null实现({})覆盖此实现

这样可以吗?

如果Der3自然没有f1(),那么它就不能与Der1Der2相同。您最好有没有f1()Base1,并直接从中派生Der3,然后有一个实现从Base1派生的f1()Base2,并从中派生Der1Der2。因此:

class Base1
{
};

class Der3 : public Base1
{
};

class Base2 : public Base1
{
    public:
    f1();
};

class Der1 : Base2
{
};
class Der2 : Base2
{
};

如果你想让你的函数什么都不做,如果它在语义上有意义,Der3覆盖了普通的实现,而不是什么都不做,是的,你可以让你的函数什么都不做。