当前位置: 首页 > news >正文

南宁企业网站建站嘉兴海盐县城乡建设局网站

南宁企业网站建站,嘉兴海盐县城乡建设局网站,福建省住房建设厅网站,子目录创建网站OVERVIEW 多态/虚函数/虚函数表1.虚函数引入后类发生的变化#xff1f;2.虚函数表的生成时机和生成原因#xff1f;3.虚函数表指针赋值的时机#xff1f;4.类对象在内存中的布局#xff1f;5.虚函数的工作原理和多态性的体现#xff1f;6.其他问题 多态/虚函数/虚函数表 n… OVERVIEW 多态/虚函数/虚函数表1.虚函数引入后类发生的变化2.虚函数表的生成时机和生成原因3.虚函数表指针赋值的时机4.类对象在内存中的布局5.虚函数的工作原理和多态性的体现6.其他问题 多态/虚函数/虚函数表 non-virtual不希望derived class 重新定义该它virtual希望derived class重新定义它并且你对它已经有了默认的定义pure-virtual希望derived class一定要重新定义它 1.虚函数引入后类发生的变化 class A { public:void func1() {}void func2() {} public:virtual void vfunc() {} }; sizeof(A) 4;//x86 sizeof(A) 8;//linuxgcc当一个或者多个虚函数加入到类中之后编译器会向类中插入一个看不见的成员变量void *vptr虚函数表指针virtual table ptr 2.虚函数表的生成时机和生成原因 当某个类中存在至少一个虚函数的时候在编译期间编译器就会为类A生成一个虚函数表 vtblvirtual table 虚函数表会一直伴随着类经过编译、链接、生成可执行文件、装载到内存中来 3.虚函数表指针赋值的时机 对于有虚函数的类在编译期时编译器向类的构造函数中安插为vptr赋值的语句在创建类对象时使得vptr指向类的vtbl 4.类对象在内存中的布局 class A { public:void func1() {}void func2() {}; public:virtual void vfunc1() {}virtual void vfunc2() {}virtual ~A() {} private:int m_a;int m_b; }; sizeof(A) 12;类A在内存中的布局 5.虚函数的工作原理和多态性的体现 多态性多态必须存在虚函数没有虚函数绝不可能存在多态并且只有调用虚函数时才有存在多态性的可能 从代码上看多态的体现 父类中有虚函数、子类中也有该同名的虚函数当通过父类指针new子类对象 or 通过父类引用绑定子类对象时如果用父类指针来调用该虚函数那么调用的是子类的虚函数 class Base { public:virtual void myvirfunc() {} };Base *ptr new Base(); ptr-myvirfunc();//多态 Base base; base.myvirfunc();//非多态 Base *pbase base; pbase-myvirfunc();//多态从表现形式上看多态的体现 程序中既存在父类也存在子类父类中必须含有虚函数子类中也必须重写父类中的虚函数父类指针指向子类对象或者父类引用绑定/指向子类对象当通过父类的指针or引用调用子类中重写的虚函数时就能看出多态性的表现了调用的是子类的虚函数 class Derive : public Base { public:virtual void myvirfunc(); }; //父类指针指向子类对象1 Derive derive; Base *pbase1 derive; pbase1-myvirfunc(); //父类指针指向子类对象2 Base *pbase2 new Derive(); pbase2-myvirfunc(); //父类引用绑定子类对象 Derive derive2; Base refer_base derive2; refer_base.myvirfunc();6.其他问题 问当进行多重继承时子类对象有几个虚函数表指针子类有几个虚函数表答在进行多重继承时子类对象会包含每个父类的成员变量和虚函数表指针。 如果每个父类都有虚函数那么每个父类都会有一个虚函数表子类对象会包含每个父类的虚函数表指针因此子类对象会有多个虚函数表指针每个指针指向相应的虚函数表。 如果某个父类没有虚函数那么子类对象就不会包含该父类的虚函数表指针只会包含其他父类的虚函数表指针和成员变量。 问如果将虚继承虚基类融入进来这时又多出来了虚基类表指针和虚基类表那么虚基类表指针在对象内存中的布局浅谈C类中的内存布局https://www.zhihu.com/tardis/zm/art/380147337?source_id1005
http://www.hkea.cn/news/14474220/

相关文章:

  • 长沙网站制作公司地址长沙申请域名网站备案
  • 厦门网站建设工作室凌风wordpress高级
  • 门户网站建设标准如何自学网站制作
  • 模板网站怎么做卖建材建设行业网站
  • 合肥高端网站建设酒店微网站建设
  • 成都高薪南网站建设程序员个人博客网站
  • 天津市建设厅网站app和网站趋势
  • 济南高端建站官方网站welcome怎么注册
  • 网站搭建制作免费广东网站建设智搜宝
  • 互联网站建设维护是做什么的红色php企业网站模板
  • 网站会员推广功能如何设计一个公司网站步骤
  • 外包网站开发多少钱西安seo外包优化
  • 购物网站如何备案怎么在百度上推广自己的店铺
  • 网站备案核实设计师接单的十个网站
  • 西安网站建设hyk123江西城开建设集团有限公司网站
  • 网站建设方案书下载seo优化网站网页教学
  • 标志空间网站做怎个样网做站个网站
  • 企业网站如何备案流程前端网站开发项目经验
  • 一个商务宣传怎么做网站合适做交流网站
  • 网站建设中网站图片如何修改家具网站开发设计任务书
  • 网站建设培训哪个好婚纱网站怎么做
  • 会展相关网站的建设情况好看的网站首页设计
  • 网站管理后台密码忘记了优设网学影视剪辑免费
  • 网上购物商城开发seo教学培训
  • 网站搭建设计网站建设推广是什么工作
  • 网站建设攵金手指科杰壹陆有域名了怎么建站
  • 学习之家网站做网站的如何开发业务
  • 浙江网络安全学院做360网站优化快速排
  • 自助构建网站宁波网站推广制作公司
  • seo网站营销网站做公司