创建一个抽象类,bass类将从中派生c++; 我必须用C++中的一个派生类来生成基类。最后,我需要证明两种方法void Read和void Show之间的多态性
在我这样做之后,我必须创建一个抽象类对象,基类将从中派生。这个类将只包含读取和显示的纯虚拟方法 我不认为我完全理解这一点。因此,我创建了一个抽象类对象,在其中我将这两个方法放在“=0”的位置,以使它们保持纯净。但这意味着我还必须编辑基类,使其从类对象派生?比如,在:创建一个抽象类,bass类将从中派生c++; 我必须用C++中的一个派生类来生成基类。最后,我需要证明两种方法void Read和void Show之间的多态性,c++,class,oop,C++,Class,Oop,在我这样做之后,我必须创建一个抽象类对象,基类将从中派生。这个类将只包含读取和显示的纯虚拟方法 我不认为我完全理解这一点。因此,我创建了一个抽象类对象,在其中我将这两个方法放在“=0”的位置,以使它们保持纯净。但这意味着我还必须编辑基类,使其从类对象派生?比如,在: class Base { } 之后 有人能让我明白吗?你说得对。在Base类中,可以将方法virtual标记为多态的。如果函数是“纯虚拟的”,在基类中没有实现,并且在任何具体的派生类中都是必需的,那么可以将它们设置为=0 cla
class Base {
}
之后
有人能让我明白吗?你说得对。在
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
}
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
}