一、什么是多态
什么是多态?同一个事物多种表现形式,强调接口的重用性。看下面:
class A {
public:
int n;
virtual void show() {
cout << "A show!" << endl;
}
virtual void show2() {
cout << "A2 show!" << endl;
}
};
class B :public A
{
public:
void show() {
cout << " B show!" << endl;
}
};
class C :public A
{
public:
void show() {
cout << " C show!" << endl;
}
};
int main()
{
A *a=new A();
B b;
C c;
a = &b;
a->show();
a = &c;
a->show();
return 0;
}
运行结果:相同的代码a->show(),结果却是不一样的!这就是多态(动态)。
二、实现原理
动态多态是利用虚函数实现的。在类中如果出现virtual关键字,那么这个类的大小将会多出一个指针的大小(32位4字节,64位8字节),