C++多态
术语“多态”(Polymorphism)是”poly“ + “morphs“的组合,其意味着多种形式。 这是一个希腊词。 在面向对象编程中,我们使用3个主要概念:继承,封装和多态。
C++中有两种类型的多态:
- 编译时多态性:通过函数重载和操作符重载来实现,这也称为静态绑定或早期绑定。
- 运行时多态性:它通过方法覆盖来实现,也称为动态绑定或后期绑定。
C++运行时多态性示例
下面来看看一个简单的C++运行时多态的例子。
#includeusing 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++中的运行时多态性的另一个例子,下面有两个派生类。
#includeusing namespace std; class Shape { public: virtual void draw(){ cout<<"drawing..."< draw(); s=&rec; s->draw(); s=○ s->draw(); }
运行上面代码,得到以下结果 -
drawing... drawing rectangle... drawing circle...
运行时多态性与数据成员
运行时多态性可以通过C++中的数据成员来实现。 下面来看看一个例子,通过引用变量访问字段,引用变量引用派生类的实例。
#includeusing namespace std; class Animal { public: string color = "Black"; }; class Dog: public Animal { public: string color = "Grey"; }; int main(void) { Animal d= Dog(); cout< 运行上面代码,得到以下结果 -
Black
本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:C++多态
本文地址:http://www.codeinn.net/cplus/1815.html
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:C++多态
本文地址:http://www.codeinn.net/cplus/1815.html