21xrx.com
2024-12-22 22:09:43 Sunday
登录
文章检索 我的文章 写文章
C++实现多态的方法
2023-07-13 08:35:48 深夜i     --     --
C++ 多态 实现方法

C++是一种面向对象编程语言,支持多态特性。多态是与继承相关的概念,它允许不同的子类对象能够响应同一个方法调用。C++中实现多态有以下几种方式:

1.虚函数

虚函数是在基类中声明,并在子类中重写的函数。通过使用虚函数,可以实现在运行时选择正确的函数实现。在函数前面添加关键字“virtual”表示它是一个虚函数。例如:


class Animal {

public:

  virtual void Sound()

    cout << "This is Animal." << endl;

  

};

class Cat : public Animal {

public:

  void Sound()

    cout << "This is Cat." << endl;

  

};

当使用指向Animal类型的指针或引用调用Sound()函数时,如果指向Cat类型的对象,会调用Cat类中的Sound()函数,因为它已经重写了Animal类中的虚函数。

2.纯虚函数

纯虚函数是在基类中声明,但没有在基类中实现的虚函数。当没有合适的函数实现时,使用纯虚函数声明。在函数前面加上“= 0”表示这是一个纯虚函数。例如:


 class Animal {

 public:

   virtual void Sound() = 0;

 };

 class Cat : public Animal {

 public:

   void Sound()

     cout << "This is Cat." << endl;

   

 };

由于Animal类中的Sound()函数是一个纯虚函数,所以Animal类成为一个抽象类。任何一个子类都必须实现Sound()函数才能实例化一个对象。

3.函数重载

函数重载允许多个函数与相同的名称存在,但参数类型或数量不同。通过使用函数重载,可以实现多态。在调用函数时,编译器会根据传递的参数类型或数量,选择正确的函数实现。例如:


class Animal {

public:

  void Sound()

    cout << "This is Animal." << endl;

  

};

class Cat : public Animal {

public:

  void Sound(string msg)

    cout << "This is Cat. " << msg << endl;

  

};

当使用Cat类的对象调用Sound()函数时,会调用重载的函数。而当使用Animal类的对象调用Sound()函数时,会调用基类中的函数。

总结

通过实现虚函数、纯虚函数和函数重载,可以在C++中实现多态。无论哪种方法,都是面向对象编程语言中非常重要的概念。在选择方法时,需要根据实际情况来选择最合适的实现。

  
  

评论区

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