21xrx.com
2024-12-22 20:43:17 Sunday
登录
文章检索 我的文章 写文章
C++多态性的实现方法
2023-07-12 15:57:28 深夜i     --     --
C++ 多态性 实现方法

C++作为一门面向对象的编程语言,多态性是其一个重要的特性之一。在C++中,实现多态性主要有两种方式:虚函数和模板。

虚函数是指在基类中声明的虚函数,在派生类中可以重新定义实现。通过在基类中将函数声明为虚函数,就能够在派生类中重写该函数实现不同的行为,这就是多态性的实现方式之一。

虚函数的实现方式是在基类中声明一个虚函数,使用virtual关键字修饰,而在派生类中使用override来说明重新实现了基类中的虚函数,即重写了基类的虚函数。具体实现如下所示:


class Animal {

public:

  virtual void makeSound()

    std::cout << "The animal makes a generic sound." << std::endl;

  

};

class Dog : public Animal {

public:

  void makeSound() override

    std::cout << "The dog barks." << std::endl;

  

};

class Cat : public Animal {

public:

  void makeSound() override

    std::cout << "The cat meows." << std::endl;

  

};

在上述代码中,Animal为基类,Dog和Cat为派生类。Animal类中声明了一个虚函数makeSound(),派生类Dog和Cat分别重写了这个函数,实现不同的行为。在主函数中,我们可以使用基类指针来实现多态性,具体代码如下所示:


int main() {

  Animal* animal1 = new Dog();

  Animal* animal2 = new Cat();

  animal1->makeSound();

  animal2->makeSound();

  return 0;

}

以上代码输出结果为:


The dog barks.

The cat meows.

通过基类指针调用派生类重写的虚函数,实现了多态性。

除了虚函数,C++还可以使用模板来实现多态性。模板是一个通用的类型或函数,可以自动适应传递给它的不同类型的参数。使用模板实现多态性的方式是使用泛型。

例如,我们在编写一个计算器程序时,可以使用模板来实现多种类型的计算,具体代码如下所示:


template <typename T>

T add(T a, T b) {

  return a + b;

}

int main() {

  std::cout << add<int>(3, 2) << std::endl;

  std::cout << add<double>(5.3, 2.7) << std::endl;

  return 0;

}

以上代码中,add函数使用了模板来定义,在main函数中调用了两次,分别计算了两个整数相加和两个浮点数相加的结果。通过模板可以实现多种类型的计算,实现了多态性。

综上所述,C++实现多态性的方式主要有虚函数和模板两种。对于不同的需求,可以选择合适的方式来实现多态性,提高代码的通用性和可扩展性。

  
  

评论区

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