提问者:小点点

创建一个抽象类,bass类将从该抽象类派生C++


我必须用C++制作一个基类和一个派生类。最后,我需要证明void Read和void show两种方法之间的多态性。

这样做之后,我必须创建一个抽象的类对象,从它派生基类,这个类将只包含纯虚拟方法Read和show。

我想我还没有完全理解这一点。因此,我创建了一个抽象类对象,将这两个方法放入“=0”中,使它们变得纯净。但这意味着我还必须编辑基类,使它从类对象派生?就像,之前:

class Base {

}

之后

Class Base : public Object

有人能让我明白吗?


共1个答案

匿名用户

你在正确的轨道上。在base类中,可以将要多态的方法标记为virtual。如果函数=0是“纯虚拟”的,并且在基类中没有实现,并且在任何具体的派生类中都是必需的,则可以设置这些函数。

class Base
{
public:
    virtual void Read() = 0;
    virtual void Show() = 0;
};

那么对于您的派生类,您的语法是反向的。请注意,override关键字指示您正在从基类重写虚拟方法。此关键字强制函数签名与基类中的签名匹配。

class Object : public Base
{
public:
    void Read() override;   // implement this
    void Show() override;   // implement this
};

用法可能如下所示。请注意,您实例化了一个对象,但携带一个指向基*的指针。由于多态性,派生实现被调用。

int main()
{
    Object obj;
    Base* p = &obj;
    p->Read();  // due to polymorphism will call Object::Read
    p->Show();  // due to polymorphism will call Object::Show
}

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(创建|抽象类|bass|类|将从|抽象类|派生|c++)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?