很容易理解公共(public)继承中的虚函数。那么私有(private)或 protected 继承中的虚函数有什么意义呢?

例如:

class Base {
public:
virtual void f() { cout<<"Base::f()"<<endl;}
};

class Derived: private Base {
public:

void f() { cout<<"Derived::f()"<<endl;}

};

这仍称为覆盖吗?这种情况有什么用?这两个f()有什么关系?

谢谢!

最佳答案

正如Scott Meyers在Effective C++中解释的那样,私有(private)继承只是一种实现技术,而不是is-a关系。

class Timer {
public:
    explicit Timer(int tickFrequency);
    virtual void onTick() const; // automatically called for each tick
    ...
};

class Widget: private Timer {
private:
    virtual void onTick() const; // look at Widget private data
    ...
};

窗口小部件客户端不应能够在窗口小部件上调用onTick,因为这不是概念性窗口小部件界面的一部分。

关于c++ - 私有(private)或 protected 继承中的虚函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2157854/

10-10 21:26
查看更多