多态丰富了C++,也是面向对象的三大特性之一,之前学过一些,但总是遗忘,看到了一瞬间又会想不起来;今天又学了一遍,做个记录。
多态呢,可以分为两类;一类是静态多态,比如函数重载、符号重写等;还有就是动态多态,动态多态是用virtual标明的函数。
如下程序:
#include <iostream>
using namespace std;
class Base
{
public:
virtual void print()
{
cout << "Base" << endl;
}
};
class Child:public Base
{
public:
void print()
{
cout << "Child" << endl;
}
};
void do_print_test(Base &te) /*该函数的参数是 父类的引用*/
{
te.print();
}
int main(int argc, char const *argv[])
{
Child ch;
cout <<"do test:"<< endl;
do_print_test(ch); /*传入子类的对象,在 do_print_test() 函数中调用的是子类的 print(), 即打印“Child” */
return 0;
}
测试打印如下
这样的方法在Android、C++中大量运用,通过重载,一个可以通过相同的接口函数,调用相同父类 任意子类通过virtual声明的函数的函数。
不得不感叹一下,SO POWERFULL~~