请教 关于DELPHI7下第三方EmbeddedWB控件的使用方法
答案:1 悬赏:0 手机版
解决时间 2021-03-21 13:50
- 提问者网友:我是女神我骄傲
- 2021-03-21 03:17
请教 关于DELPHI7下第三方EmbeddedWB控件的使用方法
最佳答案
- 五星知识达人网友:野味小生
- 2021-03-21 04:28
分析:
c.GetData(),首先在C的作用域中查找GetData,没有找到,然后再B中查找,依然没有,最后在A中查找,找到了这个函数。之后参数检查没发生错误则生成调用代码。注意在GetData(成员函数)中调用了doGetData(虚函数)。其实GetData的原型应该是:
int GetData(A* this)
{
return this->doGetData();
}
这里通过指针调用虚函数,会发生动态绑定。因为this指向的c(派生类对象),所以要调用C中的虚函数doGetData。那C中有没有这个函数呢?虽然直接没有,但是别忘了C中有继承自B中的虚函数表,也就是调用B中的这个doGetData。
之后的c.B::GetData()、c.C::GetData()、c.A::GetData()其实都一样,因为B、C中都没有GetData,所以都是调用的A中的GetData。
下面c.doGetData(),由于是通过对象c调用虚函数doGetData,所以不会发生动态绑定。和调用普通函数一样,首先在当前作用域查找doGetData,没有,然后向上在B中找到了,就会调用B中的doGetData(输出1). 至于c.B::doGetData()和c.C::doGetData()作用相同,因为在C中没哟doGetData()。
c.GetData(),首先在C的作用域中查找GetData,没有找到,然后再B中查找,依然没有,最后在A中查找,找到了这个函数。之后参数检查没发生错误则生成调用代码。注意在GetData(成员函数)中调用了doGetData(虚函数)。其实GetData的原型应该是:
int GetData(A* this)
{
return this->doGetData();
}
这里通过指针调用虚函数,会发生动态绑定。因为this指向的c(派生类对象),所以要调用C中的虚函数doGetData。那C中有没有这个函数呢?虽然直接没有,但是别忘了C中有继承自B中的虚函数表,也就是调用B中的这个doGetData。
之后的c.B::GetData()、c.C::GetData()、c.A::GetData()其实都一样,因为B、C中都没有GetData,所以都是调用的A中的GetData。
下面c.doGetData(),由于是通过对象c调用虚函数doGetData,所以不会发生动态绑定。和调用普通函数一样,首先在当前作用域查找doGetData,没有,然后向上在B中找到了,就会调用B中的doGetData(输出1). 至于c.B::doGetData()和c.C::doGetData()作用相同,因为在C中没哟doGetData()。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯