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

郑州哪有做网站的汉狮网站建设汕头

郑州哪有做网站的汉狮,网站建设汕头,上海尤安建筑设计股份有限公司,成都购物网站建设类的虚表 每个包含了虚函数的类都包含一个虚表。 当一个类(B)继承另一个类(A)时,类B会继承类A的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说&…

类的虚表

每个包含了虚函数的类都包含一个虚表。 

当一个类(B)继承另一个类(A)时,类B会继承类A的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说,一个类继承了包含虚函数的基类,那么这个类也拥有自己的虚表。

来看以下的代码。类A包含虚函数vfunc1,vfunc2,由于类A包含虚函数,故类A拥有一个虚表。

class A {
public:virtual void vfunc1(){    cout << "A::vfunc1" << endl;}virtual void vfunc2(){    cout << "A::vfunc2" << endl;}void func1();void func2();
private:int m_data1, m_data2;
};

类A的虚表如图1所示。 

 虚表是一个指针数组,其元素是虚函数的指针,每个元素对应一个虚函数的函数指针。需要指出的是,普通的函数即非虚函数,其调用并不需要经过虚表,所以虚表的元素并不包括普通函数的函数指针。

虚函数指针的赋值发生在编译器的编译阶段,也就是说在代码的编译阶段,虚表就可以构造出来了。

虚表是属于类的,而不是属于某个具体的对象,一个类只需要一个虚表即可。同一个类的所有对象都使用同一个虚表。

虚表指针

为了指定对象的虚表,对象内部包含一个虚表的指针,来指向自己所使用的虚表。为了让每个包含虚表的类的对象都拥有一个虚表指针,编译器在类中添加了一个指针,*__vptr,用来指向虚表。这样,当类的对象在创建时便拥有了这个指针,且这个指针的值会自动被设置为指向类的虚表。

 上面指出,一个继承类的基类如果包含虚函数,那个这个继承类也有拥有自己的虚表,故这个继承类的对象也包含一个虚表指针,用来指向它的虚表。

虚函数表存储位置

首先虚函数表存储在只读数据段(.rodata)、虚函数存储在代码段(.text)、虚表指针的存储的位置与对象存储的位置相同,可能在栈、也可能在堆或数据段等。
扩展:


 

 

http://www.yayakq.cn/news/133449/

相关文章:

  • 网站右侧浮动广告代码视频网站怎么做采集
  • 仓山福州网站建设cc网站域名注册
  • 山东小语种网站建设网站的通知栏一般用什么控件做
  • 一流的中小型网站建设市场营销策划案例经典大全
  • 洮南网站建设哪家专业深圳市住建工程交易
  • 什么网站都能打开的浏览器怎样免费建立网站
  • 濮阳网站建设在哪做速橙科技有限公司网站建设
  • 江西邮电建设工程有限公司网站济南网络免费推广网站
  • 网站后台开发做什么mvc网站建设的实验报告
  • 站长之家网站金融行业做网站
  • 深圳网站设计价格制作灯笼作文300字
  • 贵州建设监理协会网站为新公司取名
  • 网站策划步骤公司名后缀的邮箱
  • 个人网站是啥nginx建设网站教程
  • 广州 网站设计公司排名广州网站seo公司
  • 兰州网站建设方案昆明网站建设论坛
  • 手机怎么打开禁止访问的网站站酷logo设计
  • 一个域名可以做两个网站么中华室内设计网公众号下载
  • 重庆黄埔建设集团网站做网站要会哪些技术
  • 怎样建设自己的网站WordPress批量删除无用标签
  • 海运外贸流程google seo 优化
  • 做dnf辅助网站福州网站建设方案书
  • 淄博做网站跟优化济南英文网站建设
  • 唐山建设企业网站阜阳企业网站推广
  • 网站怎么定位义乌网红村
  • 上下框架 网站响应式布局网站
  • 石家庄站全景图网站seo 规范
  • 汽车宣传网站模板如何做挂qq的网站
  • 怎么检测网站是否安全出口退税在哪个网站做
  • 做编程的+网站有哪些内容做网站的公司倒闭