我知道 why 我想使用私有虚拟函数,但我究竟能如何实现它们呢?
例如:
class Base{
[...]
private:
virtual void func() = 0;
[...]
};
class Derived1: public Base{
void func()
{ //short implementation is ok here
}
};
class Derived2: public Base{
void func(); //long implementation elsewhere (in cpp file)
};
[...]
void Derived2::func()
{ //long implementation
}
第一个版本没问题,但并不总是可行。
是不是第二个版本只是名字隐藏?如果你不能在Base::func()
的类声明中做到,那么如何定义Derived2
的{{1}}?
由于
答案 0 :(得分:4)
如果你不能在
Base::func()
的类声明中做到,那么如何定义Derived2
的{{1}}?
您没有定义“Dereived2
Base::func()
”(无论这可能是什么),您定义Derived2
。这对我来说很好:
Derived2::func()
你的问题是什么?
答案 1 :(得分:3)
多态性和可访问性是两个独立的概念。您始终可以覆盖基类的私有虚函数,但除了基类本身之外,您将无法从任何位置调用基类版本。此外,C++ FAQ Lite在这个主题上有相当长的条目。
答案 2 :(得分:-2)
根据我的理解,你正试图做多态。
实现多态性必须遵循4条规则。
有关代码示例,请参阅此awesome wiki page。
希望这是你想要的。 ^^
你真的,
SeargX