在c++语言中,这种多态性可以通过强制多态、重载多态、类型参数化多态、包含多态4种形式来实现。
类型参数化多态和包含多态统称为一般多态性,用来系统地刻画语义上相关的一组类型。
重载多态和强制多态统称为特殊多态性,用来刻画语义上无关联的类型间的关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //1.参数多态 //包括函数模板和类模板 //2.包含多态 virtual class A{ virtual void foo() { printf("A virtual void foo()"); } };
class B : public A { void foo() { printf("B void foo()"); } }; void test() {
A *a = new B(); a->foo(); // B void foo() }
//3.重载多态
//重载多态是指函数名相同,但函数的参数个数或者类型不同的函数构成多态
void foo(int);
void foo(int, int);
//4.强制多态
//强制类型转换 |
重载多态和强制多态是指特定多态。
参数多态和包含多态是指通用多态。