【发布时间】:2011-06-21 22:26:48
【问题描述】:
考虑以下代码:
class Base
{
protected:
virtual void methodDefinedInBase() = 0;
}
Class Derived: private Base
{
public:
void someMethod();
protected:
virtual void methodDefinedInBase()
{
std::cout<<"From B"<<std::endl;
}
}
在上面的代码中,我可以创建“派生”类型的对象。 C++ 允许我从派生类中的“someMethod()”访问方法“methodDefinedInBase()”。但是,如何创建“Base”类型的对象?
谢谢,
毗湿奴。
【问题讨论】:
-
你不能。为什么要这样做?
-
base 中的 methodDefinedInBase 究竟是如何“定义”的?它只在那里声明。
-
我试图使用私有继承来实现组合。我的自然冲动是创建一个“Base”对象并将其添加到“Derived”类中。但是,我辜负了自己的目的。实现私有继承将强制执行组合。 :)
标签: c++ pure-virtual virtual-functions private-inheritance