复习整理多态,不涉及难点内容,主要是零碎的知识点
1.多态的类型
(1) 编译时多态:
function overloading
operator overloading
(2) 运行时多态:
dynamic binding 动态绑定
2.含有虚函数的类称为多态类
只有虚函数才使用的是动态绑定 ,其他的全部都是静态绑定
(1) The virtual function of a base will always be virtual in its derived classes.
(2) 主要作用:与继承相结合以实现运行时多态性。在公有继承层次中的一个或多个派生类中对虚函数进行重定义,然后通过指向基类的指针(或引用)调用虚函数来实现运行时多态性。
(3)when pass-by-value is used, static binding occurs.
(4)通过基类引用调用虚函数
(5) 函数重载,虚特性丢失
3.纯虚函数(pure virtual function)
在基类中只进行虚成员函数的声明,声明格式为:
virtual 返回值 函数名(形参表) = 0;
在派生类中进行定义.
4.多态与重载的比较
一.重载取决于三个方面的因素:
(1)返回值类型
(2)形参的数目
(3)形参的类型
二.多态是通过虚函数实现的函数的重定义,通过动态绑定
重载示例:
#include<iostream>
using namespace std;
// 重载实现不同类型的abs功能
int abs(int num) {
return (num > 0 ? num : -num);
}
double abs(double num) {
return (num > 0.0 ? num : -num);
}
long abs(long num) {
return (num > 0 ? num : -num);
}
int main() {
cout << abs(1) << endl;
cout << abs(-2.1) << endl;
cout << abs(5L) << endl;
return 0;
}