#include<iostream> using namespace std; class ClaA { public: //virtual int a() = 0; //纯虚函数,类(抽象类)不能被实例化 virtual int a(){return 3;} virtual int b(){return 3;} int add(){return a()+b();} }; //具体类 class ClaB : public ClaA { public: virtual int a(){return 1;}//virtual可省略 virtual int b(){return 1;} }; class ClaC : public ClaA { public: int a(){return 2;} int b(){return 2;} }; //动态绑定(后期绑定),虚函数表(vtable) int adds(ClaA *a){ return a->add(); } int main() { ClaC c; ClaB d; cout<<adds(&c)<<","<<adds(&d)<<endl;//4,2 cout<<sizeof(ClaA)<<","<<sizeof(ClaB)<<endl;//4,4:vptr占用 return 0; }
原文链接: https://www.cnblogs.com/iplus/archive/2013/04/11/4467194.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/84104
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!