Blu*_*ond 6 c++ virtual-functions dynamic-binding
在C++中,在动态绑定期间,请考虑以下示例...
class Base
{
virtual void fun()
{
cout<<"Base";
}
};
class Derived : Base
{
void fun()
{
cout<<"Derived";
}
};
int main()
{
Base *bptr;
Derived d;
bptr=&d;
bptr->fun();
}
Run Code Online (Sandbox Code Playgroud)
由于虚拟关键字/动态绑定的声明,上述函数的输出是"Derived".
根据我的理解,将创建一个包含虚函数地址的虚拟表(Vtable).在这种情况下,为派生类创建的虚拟表指向继承的虚拟表fun().并且bptr->fun()将会得到解决,bptr->vptr->fun();.这指向继承的基类函数本身.我不完全清楚如何调用派生类函数?
| 归档时间: |
|
| 查看次数: |
19749 次 |
| 最近记录: |