21xrx.com
2024-11-05 19:03:03 Tuesday
登录
文章检索 我的文章 写文章
C++中的多态性及示例解析
2023-07-08 10:48:22 深夜i     --     --
C++ 多态性 示例解析

C++是一种面向对象的编程语言,在其中最重要的特征之一就是多态性。多态性可以使同一个函数或操作在不同对象上产生不同的行为。本文将介绍C++中的多态性及其示例,以便更好地理解这个概念。

多态性概述

多态性是指不同的对象可以通过相同的接口来完成相似的操作。简单来说,多态是相同的接口,不同的实现。它是一种推迟绑定(或运行时绑定)的机制,是在程序运行时进行动态绑定的实现。

例子1

我们可以通过下面这个例子来更好地理解多态性:


#include <iostream>

using namespace std;

class Animal {

 public:

  virtual void sound()

   cout << "动物发出声音。" << endl;

  

};

class Dog: public Animal {

 public:

  void sound()

   cout << "狗吠。" << endl;

  

};

class Cat: public Animal {

 public:

  void sound()

   cout << "猫叫。" << endl;

  

};

int main() {

 Animal *animal1 = new Animal();

 Animal *animal2 = new Dog();

 Animal *animal3 = new Cat();

 animal1->sound();

 animal2->sound();

 animal3->sound();

}

在上面的例子中,我们定义了一个Animal类和派生自Animal的Dog和Cat类。Animal类中定义了虚函数sound(),该函数在派生类中被重写。我们在main函数中创建了一个基类指针和两个派生类指针。然后,我们调用了它们的sound()函数。在运行时,程序会动态绑定sound()函数,从而产生不同的结果,即输出“动物发出声音。”、“狗吠。”和“猫叫。”。

例子2

在下面这个例子中,我们使用多态性来实现一个计算器程序:


#include <iostream>

using namespace std;

class Operation {

 public:

  double num1, num2;

  virtual double getResult()

   double result = 0;

   return result;

  

};

class Add: public Operation {

 public:

  double getResult() {

   return num1 + num2;

  }

};

class Subtract: public Operation {

 public:

  double getResult()

   return num1 - num2;

  

};

int main() {

 Operation *operation;

 Add add;

 Subtract sub;

 operation = &add;

 operation->num1 = 10.0;

 operation->num2 = 5.0;

 cout << "加法运算:" << operation->getResult() << endl;

 operation = &sub;

 operation->num1 = 10.0;

 operation->num2 = 5.0;

 cout << "减法运算:" << operation->getResult() << endl;

 return 0;

}

在这个例子中,我们定义了一个Operation类和派生自Operation的Add和Subtract类。Operation类包含了两个数字,然后定义了虚函数getResult(),这个函数在派生类中被重写。在main函数中,我们创建了指向基类的指针和两个派生类的对象。然后,我们将指针指向add对象,并设置num1和num2的值。最后,我们调用getResult函数来进行加法操作,并输出结果。接着,我们将指针指向sub对象,并计算两个数的差,最后输出结果。

结论

在C++中,多态性是一种非常有用的机制,可以使我们更好地把代码结构进行抽象和封装,从而提高代码重用和可维护性。虚函数的使用和指向基类的指针是实现C++多态性的关键。我们在程序中使用多态性时要注意,派生类的函数必须和基类函数的返回值、参数列表和名称完全相同,否则会报错。

  
  

评论区

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