C++多态机制
1、实现方法:virtual
2、内存布局
(1)基类Base
class A
{
public:
virtual voidfoo(){}
void g(){}
private:
int a;
int b;
}
内存布局图:
函数g()不占用内存空间,经过编译器的处理,类的非虚成员函数同普通函数一样,执行效率也无差别。
(2)派生类
class B:public A
{
public:
void foo(){}
virtual voidh(){}
private:
int c;
int d;
};
派送类B重写了基类A中得虚函数foo()。
A * pA = new B();
pA->foo()其实调用的是派生类B中的B::foo();但pA->g()调用的是基类A中的A::g()。