class a
{
    public:
        a(int);
        virtual ~a();
        virtual void print();
        int getNumber()
    private:
        int number;
};

class b : public a
{
    public:
        b(int);
        virtual ~b();
};

class c : public b
{
    public:
        c(int);
        virtual ~c();
        virtual void print();
};


这些是代表cpp文件的头。我在每个适当的cpp文件中实现了所有方法。
我使用了这段代码,尽管我不知道b类是否也应该实现,但它工作得很好
打印(即使这样:print(){}),因为在我看来更好的编程。
那么合适的方法是什么呢?
实施(即使不是必需的)还是没有?

最佳答案

您只应编写将由子类重载的函数。如果子类没有专门研究给定的行为,那么在子类中编写父函数的副本将是一种不好的做法。这不仅浪费而且可能造成混淆,而且在以后的某个时刻还可能导致错误。

考虑一下:我将其称为Monkey的父类,而将其称为Tarzan的子类。在Monkey类中,我将为Swing()定义一个函数。

现在,由于Tarzan是Monkey的派生产品,并且学会了像Monkey一样在树上摇摆,因此无需编写Tarzan自己的版本的Swing函数。但是,可以说我确实只是为了“完整”而写了它。现在,如果需要更改Monkey摆动的方式,我有2个例程可以更新:一个用于Monkey类,另一个用于Tarzan。更糟糕的是,如果我确实改变了猴子的摇摆方式而忘记在Tarzan中进行相同的更改,Tarzan将不再像猴子一样摇摆,这将是意料之外的,而且可能是错误的。

结论:仅在子类函数中编写代码,在这些函数中,子类需要根据已为父类定义的内容进行专门化。

10-06 08:45