抽象函数|C++
前几节的例子演示了派生类与基类指针的使用方法。接下来我们接着之前游戏的例子,我们的每一个角色都有一个attack()函数。
为了能够让Role指针为每一个派生类提供调用attack()函数,我们需要在基类将函数声明成抽象函数。
在基类中声明一个抽象函数,在派生类中使用相应的函数,多态允许使用Role指针来调用派生类的函数。
每个派生类将覆盖attack()函数并有一个单独的实现:
class Role{
public:
virtual void attack() {
}
};
class Warrior: public Role {
public:
void attack() {
cout << "剑刃风暴!"<<endl;
}
};
class Magician: public Role {
public:
void attack() {
cout << "冰暴!"<<endl;
}
};
通过关键字virtual可以将基类的函数声明成抽象函数。
现在,我们可以使用Role指针来调用attack()函数。
int main() {
Warrior w;
Magician m;
Role *r1 = &w;
Role *r2 = &m;
r1->attack();
r2->attack();
}
/* 输出:
剑刃风暴!
冰暴!
*/
由于attack()函数被声明为抽象的,它就像一个模板,告诉派生类自己有一个attack()函数。
我们通过游戏的例子来演示多态的概念,我们使用Role指针调用相同的attack()函数,并生成不同的结果。
r1->attack();
r2->attack();
如果基类中的函数是抽象的,则派生类中的函数实现将根据所引用对象的实际类型进行调用,而不管原先声明的是那种类型。
声明或者继承了一个抽象函数的类被称为一个多态类。
版权声明:
作者:RHZ
链接:https://www.rhzhz.cn/?p=974
来源:RHZ | 用文字记录工作和学习生活
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
抽象函数|C++
前几节的例子演示了派生类与基类指针的使用方法。接下来我们接着之前游戏的例子,我们的每一个角色都有一个attack()函数。
为了能够让Role指针为每一个派……
共有 0 条评论