位置:首页 > 高级语言 > C++教程 > C++多态

C++多态

术语“多态”(Polymorphism)是”poly“ + “morphs“的组合,其意味着多种形式。 这是一个希腊词。 在面向对象编程中,我们使用3个主要概念:继承,封装和多态。

C++中有两种类型的多态:

  • 编译时多态性:通过函数重载和操作符重载来实现,这也称为静态绑定或早期绑定。
  • 运行时多态性:它通过方法覆盖来实现,也称为动态绑定或后期绑定。

C++运行时多态性示例

下面来看看一个简单的C++运行时多态的例子。

#include   
using namespace std;  
class Animal {  
    public:  
void eat(){    
cout<<"Eating...";    
    }      
};   
class Dog: public Animal    
{    
 public:  
 void eat()    
    {    
       cout<<"Eating bread...";    
    }    
};  
int main(void) {  
   Dog d = Dog();    
   d.eat();  
   return 0;  
}

运行上面代码,得到以下结果 -

Eating bread...

C++运行时多态性示例:通过使用两个派生类

下面来看看看C++中的运行时多态性的另一个例子,下面有两个派生类。

#include   
using namespace std;  
class Shape {  
    public:  
virtual void draw(){    
cout<<"drawing..."<draw();   
        s=&rec;  
     s->draw();    
    s=○  
     s->draw();   
}

运行上面代码,得到以下结果 -

drawing...
drawing rectangle...
drawing circle...

运行时多态性与数据成员

运行时多态性可以通过C++中的数据成员来实现。 下面来看看一个例子,通过引用变量访问字段,引用变量引用派生类的实例。

#include   
using namespace std;  
class Animal {  
    public:  
    string color = "Black";    
};   
class Dog: public Animal   
{    
 public:  
    string color = "Grey";    
};  
int main(void) {  
     Animal d= Dog();    
    cout<
	

运行上面代码,得到以下结果 -

Black