Polymorphism with C++
作者:互联网
1.子类内存模型
父类+子类多的variable
2.virtual -> 函数地址晚绑定,运行时可以再动态决定
3.编译时,如果类有virtual,编译器会给该类提供一个1维的虚表vtable。 编译器给每个对象(注意是对象)一个vptr, 这个指针指向了对象当前对应类的虚表,这样调用时候就能找到对应的虚函数。
3.纯虚的析构函数->让派生类new不了
4.派生类的对象可以赋给基类「引用」
5.在构造函数和析构函数中调用「虚函数」,不是多态。编译时即可确定,调用的函数是自己的类或基类中定义的函数,不会等到运行时才决定调用自己的还是派生类的函数。
6.有virtual的类,对象会带一个vptr,所以大小大了8byte
https://qinglinmao8315.github.io/c++/2018/02/28/c++-vtable-in-virtual-inheritance.html
https://qinglinmao8315.github.io/c++/2018/02/27/c++-vtable-in-multiple-inheritance.html
https://qinglinmao8315.github.io/c++/2018/02/26/c++-vtable-for-dynamic_cast.html
https://www.cnblogs.com/cxq0017/p/6074247.html
https://zhuanlan.zhihu.com/p/104605966
标签:Polymorphism,vtable,函数,C++,virtual,html,c++,https 来源: https://www.cnblogs.com/linsinan1995/p/13789881.html