holyya.com
2025-09-04 19:37:43 Thursday
登录
文章检索 我的文章 写文章
C++中的多态性
2023-07-05 11:24:02 深夜i     --     --
继承 虚函数 动态绑定 多态函数 派生类

C++是一种面向对象的编程语言,多态性是其中一个重要的概念。多态性允许程序员使用一种通用的方式处理不同类型的对象,使代码更加灵活和可维护。

C++中的多态性主要由两种方式实现:虚函数和模板。

虚函数允许子类重写父类的方法,实现自己的版本。这样,父类指针可以指向子类对象,并调用子类的方法。这种方法称为动态多态性,因为编译器只在运行时才能确定要调用哪个方法。

例如,我们有一个基类 Animal 和两个派生类 Cat 和 Dog。它们都有一个 speak() 方法,但是实现不同。我们可以使用虚函数来实现多态性:


class Animal {

public:

  virtual void speak() cout << "Animal speaks" << endl;

};

class Cat : public Animal {

public:

  void speak() cout << "Meow!" << endl;

};

class Dog : public Animal {

public:

  void speak() cout << "Woof woof!" << endl;

};

int main() {

  Animal* animalPtr1 = new Cat();

  Animal* animalPtr2 = new Dog();

  animalPtr1->speak(); // 输出 Meow!

  animalPtr2->speak(); // 输出 Woof woof!

}

另一种实现多态性的方式是使用模板。模板是一种使用泛型来编写代码的方式,可以处理不同类型的数据。模板可以被用于函数和类。

例如,我们可以写一个通用的 swap() 函数来交换两个变量,而不需要为每个数据类型写一个独立的函数:


template <typename T>

void swap(T& x, T& y)

  T tmp = x;

  x = y;

  y = tmp;

int main() {

  int a = 1, b = 2;

  double c = 3.14, d = 2.71;

  swap(a, b); // a=2, b=1

  swap(c, d); // c=2.71, d=3.14

}

多态性是面向对象编程中最重要的概念之一。掌握多态性可以使代码更加灵活且易于维护。在 C++ 中,使用虚函数和模板是实现多态性的两种主要方式。

  
  

评论区

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