C++ 虚函数、多态、为什么需要虚拟析构函数

1、类的对象通过一个虚函数表vftb来维护类中所有的虚函数,vftb相当于一个元素类型为函数指针的数组

2、派生类继承基类中的虚函数,如果没有在派生类中重新定义虚函数,则虚函数表中相同虚函数的地址值是相同的,否则,不相同

3、派生类如果想重新定义基类中的虚函数,则派生类中虚函数的申明与基类相同,定义不同

4、虚函数实现了晚期绑定技术,普通的成员函数的调用直接在编译阶段就确定了,而虚函数则在编译时生成:对象-》虚函数表-》函数的形式,因此只有动态运行根据具体的对象来调用函数

5

 5、C++ 通过虚函数来实现多态,可以将派生类的地址值赋给基类的指针、可以将派生类的值赋给基类的引用。这种情况下指针或引用与所指向的对象与引用的对象类型不一致,这在C语 言  中是不允许的。C++通过这种方式来实现的多态,即根据运行时来确定对象调用哪个函数,即函数的调用取决于指针或引用所指向或引用对象的值,而不是指针或引用的类型

 6、为什么需要虚拟析构函数?

  

posted @ 2013-04-14 18:19  郭远威  阅读(414)  评论(0编辑  收藏  举报