21xrx.com
2024-12-22 17:15:11 Sunday
登录
文章检索 我的文章 写文章
C++多态例子的引用
2023-07-04 19:19:05 深夜i     --     --
C++ 多态 例子 引用

C++是一门强大的编程语言,它支持多种编程范式,其中面向对象编程(OOP)是其中之一。OOP的一个重要特性就是多态(Polymorphism),它允许使用不同的类对象来执行相同的动作。在本文中,我们将以一个简单的例子来说明C++中多态的使用。

假设我们正在开发一个游戏,游戏中有不同类型的角色(Character),比如战士(Warrior)、法师(Wizard)、盗贼(Thief)等。每种角色都有自己的属性和技能。现在我们想要实现一个攻击(Attack)的方法,不同的角色攻击方法不同,但我们希望在调用攻击方法时只需要提供一个角色对象就可以了。

为了实现这个需求,我们可以使用多态。首先,我们定义一个基类Character,包含一些公共的属性和方法,例如:


class Character {

public:

  string name;

  int level;

  virtual void attack()

    cout << "Base attack" << endl;

  

};

注意到我们在attack()方法前加了virtual关键字,这表明该方法是个虚函数,可以被子类覆盖。接下来,我们定义三个子类Warrior、Wizard和Thief,它们分别实现自己的attack()方法:


class Warrior: public Character {

public:

  void attack()

    cout << "Warrior attack" << endl;

  

};

class Wizard: public Character {

public:

  void attack()

    cout << "Wizard attack" << endl;

  

};

class Thief: public Character {

public:

  void attack()

    cout << "Thief attack" << endl;

  

};

现在,我们可以将不同类型的角色对象传递给一个指向Character的指针,然后调用它们的攻击方法,这样就实现了多态:


void doAttack(Character* character) {

  character->attack();

}

int main() {

  Warrior warrior;

  Wizard wizard;

  Thief thief;

  doAttack(&warrior); // 输出 “Warrior attack”

  doAttack(&wizard); // 输出 “Wizard attack”

  doAttack(&thief); // 输出 “Thief attack”

  return 0;

}

在上面的代码中,我们定义了一个doAttack()函数,它的参数是一个指向Character的指针。调用doAttack()函数时,我们传入不同类型的角色对象,然后调用它们的attack()方法,由于attack()方法是虚函数,所以会根据实际对象的类型来调用对应的方法,这就是多态的应用。

总结一下,本文以一个简单的例子介绍了C++中多态的应用。多态是面向对象编程的重要特性,能够使程序更加灵活、可扩展,并且代码复用度高。在实际项目中,多态能够更好地帮助程序员实现复杂的逻辑,提高代码的可读性和可维护性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复