C++的多态性
2010-07-03 00:07
211 查看
在网上看到一个哥们对多态的解释
一、多态性
c++的一个重要特性就是多态性,多态性就是同样的消息被不同的对象接收的时候导致完全不同的行为。消息是指对类的成员函数的调用,不同的行为是指不同的函数的实现。在c++中常见的多态的实现形式有函数重载和虚函数。
1)虚函数实现
简单的说就是允许将子类对象的指针(或者对象的地址)赋值给父类类型的指针。这个父类的指针就根据当前赋给它的子对象的特征运作。具体的说,在父类中声明一虚函数,当有多个类继承它的时候,会对这个父类的虚函数覆盖掉父类的虚函数,进行重新不同的实现。这些子类的对象的指针或者地址可以赋值给父类的指针,通过父类的指针调用虚函数的时候,实际上会调用这个子类中的虚函数的实现,而不是父类中的。这样,当不同的子类的对象的指针赋值给父类的指针的时候,通过父类的指针调用同一名称的函数但实现了不同的行为,这样就实现了多态。
2)函数的重载
函数的重载就是多个函数的名字相同,但的参数列表不同,编译器根据实际实参列表进行最佳匹配,自动完成调用哪各函数。例如运算符的重载。
二、重载与覆盖
覆盖是子类重新定义父类虚函数的做法。可见覆盖是子类与父类的垂直关系,而且函数的名称和参数列表完全相同。而重载是同一类中同名方法之间的水平关系,而且这些函数只是名字相同,参数列表不要求相同。此外,重载是根据实参列表决定调用哪个函数的,而覆盖是根据对象的类型调用不同的函数。
一、多态性
c++的一个重要特性就是多态性,多态性就是同样的消息被不同的对象接收的时候导致完全不同的行为。消息是指对类的成员函数的调用,不同的行为是指不同的函数的实现。在c++中常见的多态的实现形式有函数重载和虚函数。
1)虚函数实现
简单的说就是允许将子类对象的指针(或者对象的地址)赋值给父类类型的指针。这个父类的指针就根据当前赋给它的子对象的特征运作。具体的说,在父类中声明一虚函数,当有多个类继承它的时候,会对这个父类的虚函数覆盖掉父类的虚函数,进行重新不同的实现。这些子类的对象的指针或者地址可以赋值给父类的指针,通过父类的指针调用虚函数的时候,实际上会调用这个子类中的虚函数的实现,而不是父类中的。这样,当不同的子类的对象的指针赋值给父类的指针的时候,通过父类的指针调用同一名称的函数但实现了不同的行为,这样就实现了多态。
2)函数的重载
函数的重载就是多个函数的名字相同,但的参数列表不同,编译器根据实际实参列表进行最佳匹配,自动完成调用哪各函数。例如运算符的重载。
二、重载与覆盖
覆盖是子类重新定义父类虚函数的做法。可见覆盖是子类与父类的垂直关系,而且函数的名称和参数列表完全相同。而重载是同一类中同名方法之间的水平关系,而且这些函数只是名字相同,参数列表不要求相同。此外,重载是根据实参列表决定调用哪个函数的,而覆盖是根据对象的类型调用不同的函数。
相关文章推荐
- C++基础之多态性与虚函数
- C++多态性
- C++中的多态性
- C++多态性(静多态和动多态)
- 利用C++模板,代替虚函数实现类的静态多态性及动态继承
- c++多态性
- C++的多态性实现机制剖析(即VC视频第3课this指针讲解)[程序员之家论坛]
- c++讲义 第9章 多态性
- 如何理解C++的多态性和类型动态绑定?
- 漫漫编程路——C++篇(八)——关于虚函数和多态性 (一)
- 2013级C++第14周(春)项目——多态性、虚函数和抽象类
- 对C++多态性的一点理解
- 从零学习C++第九篇:多态性与虚函数
- c++基础---C++之多态性与虚函数
- C++程序设计-第14周 多态性与虚函数
- 关于C实现C++的多态性
- C++ 虚函数、多态性的演示 -- 虚拟析构函数
- 谭浩强版C++实例 第六章 多态性与虚函数(4个)
- 对C++多态性的一点理解
- c++之多态性(动态绑定)