私有继承:如何使基类的对象(具有纯虚方法)?

| 考虑以下代码:
class Base
{
  protected:
  virtual void methodDefinedInBase() = 0;
}

Class Derived: private Base
{
  public:
  void someMethod();
  protected:
  virtual void methodDefinedInBase()
  {
    std::cout<<\"From B\"<<std::endl;
  }
}
在上面的代码中,我可以创建\“ Derived \”类型的对象。 C ++允许我从派生类中的\“ someMethod()\”访问方法\“ methodDefinedInBase()\”。但是,如何创建类型为“ Base”的对象? 谢谢, 毗湿奴     
已邀请:
        正如Beta在评论中指出的那样,您不能实例化一个抽象基类(一个具有纯虚方法的类)。您只能实例化实现那些纯虚方法的派生类。不管您使用的是公共继承还是私有继承,都是如此。     
        您不会创建任何类型为“ Base \”的对象-通过为Base提供纯虚拟成员,您明确表示该类本身不能存在,而只能通过派生类存在。您要创建的是指向Base的指针或引用:
Derived1 x;
Derived2 y;

// Somewhere inside Derived1:
Base & rb = x;

// Somewhere inside Derived2:
Base * pb = &y;
然后,可以通过对
rb
pb
进行统一处理来使用多态,而无需了解
x
y
的具体类型。     
        在基类中声明纯虚函数意味着:1.无法实例化此类的对象。 2.要实例化派生类的对象,必须定义所有纯虚函数。换句话说,纯虚拟方法不允许您创建一个已定义类的对象。     

要回复问题请先登录注册