CR的代码文本

all for learning about the world
  订阅 订阅  :: 管理

虚函数(1)

Posted on 2010-05-14 17:04  mumuliang  阅读(182)  评论(0编辑  收藏  举报
virtual

虚函数用来解决晚捆绑(late binding)/动态捆绑(dynamic binding)/运行时捆绑(runtime binding)。

仅需在基类中声明一个函数为virtual,调用所有匹配基类声明行为的派生类函数都将使用virtual机制,无论派生了多少层。

实际编码中,在派生类中也写上virtual,提高代码可读性。

带有虚函数的类,在头部放置一个VPTR,指向该类的VTABLE。VPTR长度即一个void指针的长度。

纯虚函数(用来定义接口类/抽象类)使用关键字virtual,并在其后面加上 = 0(表示在VTABLE表中为该函数保留一个地址,但值为NULL。)。实例化该类的行为会被编译器阻止(有NULL值的VTABLE是原因)。继承自抽象类的类,必须实现所有纯虚函数,否则,它仍然是一个抽象类。