公共(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
...
};
Widget 客户端不应该能够在 Widget 上调用 onTick,因为这不是 Widget 概念接口(interface)的一部分。
关于c++ - 私有(private)或 protected 继承中的虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157854/