C++常见面试题 虚函数
1、在没有虚函数的情况下,一个简单的类所占的内存大小是成员函数所占的内存大小,类中含有一个int型成员,所占内存大小为4.

3、在出现继承的情况下,如图SubBaseA继承了BaseA,虚指针也被继承了,所以在SubBaseA中依然存在一个虚指针指向一个虚函数表,在虚函数表中存放的先是来自父类的虚函数地址,而后是派生类中同名的虚函数覆盖了父类的虚函数地址,派生类虚函数地址。

4、pBase 在构造函数被调用时指向了SubBaseA的虚函数表,即pBase->vfptr->SubBaseA::BTest(),这就是所谓的多态的完成原理。类中的虚函数是动态生成的,由虚函数表的指向进行访问。普通函数的地址对编译期来说“静态”的,也就是函数地址在编译期就已经确定了


6、通过以上的描述基本可以理解了C++虚函数的虚拟机制原理,还有一个常见的面试问题是继承中为什么把析构函数设置为虚函数,之前只是知道但是不清楚,搞懂了虚函数的原理之后就彻底理解了继承中一定要把析构设置为虚函数,不然就会出现内存泄漏了。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:70
阅读量:92
阅读量:60
阅读量:27
阅读量:42