很容易理解公共(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/