virtual
虚函数用来解决晚捆绑(late binding)/动态捆绑(dynamic binding)/运行时捆绑(runtime binding)。
仅需在基类中声明一个函数为virtual,调用所有匹配基类声明行为的派生类函数都将使用virtual机制,无论派生了多少层。
实际编码中,在派生类中也写上virtual,提高代码可读性。
带有虚函数的类,在头部放置一个VPTR,指向该类的VTABLE。VPTR长度即一个void指针的长度。
纯虚函数(用来定义接口类/抽象类)使用关键字virtual,并在其后面加上 = 0(表示在VTABLE表中为该函数保留一个地址,但值为NULL。)。实例化该类的行为会被编译器阻止(有NULL值的VTABLE是原因)。继承自抽象类的类,必须实现所有纯虚函数,否则,它仍然是一个抽象类。
虚函数用来解决晚捆绑(late binding)/动态捆绑(dynamic binding)/运行时捆绑(runtime binding)。
仅需在基类中声明一个函数为virtual,调用所有匹配基类声明行为的派生类函数都将使用virtual机制,无论派生了多少层。
实际编码中,在派生类中也写上virtual,提高代码可读性。
带有虚函数的类,在头部放置一个VPTR,指向该类的VTABLE。VPTR长度即一个void指针的长度。
纯虚函数(用来定义接口类/抽象类)使用关键字virtual,并在其后面加上 = 0(表示在VTABLE表中为该函数保留一个地址,但值为NULL。)。实例化该类的行为会被编译器阻止(有NULL值的VTABLE是原因)。继承自抽象类的类,必须实现所有纯虚函数,否则,它仍然是一个抽象类。