【编程开发】AspAsp.NetCGIPHPJspXMLPERLC++C#VCVBDelphiPowerBuilderJAVA汇编数据库编程移动开发其它语言

您现在的位置:首页 > 网络学院 > 编程开发 > C++ > 细谈C++多态性的“动”与“静”

细谈C++多态性的“动”与“静”

来源:BLOG 作者: 日期:2006-08-15

【聚杰网C++】细谈C++多态性的“动”与“静”

// 验证首地址
C11 obj110;
C11 obj111;

printf("obj110 的地址:%x ", &obj110);
printf("obj111 的地址:%x ", &obj111);
printf("obj110 虚表的地址:%x ", *(&obj110));
printf("obj111 虚表的地址:%x ", *(&obj111));

  结果是:

  obj110 的地址:12ff7c
  obj111 的地址:12ff78
  obj110 虚表的地址:432098
  obj111 虚表的地址:432098

  由上面的结果我们可以验证:

  1、一个类一个VTABLE,而不是一个对象一个VTABLE。

  2、对象的首地址的内容就是VTABLE的地址。

  总结一下:

  C++的多态性包括其概念和实现,本文从编译器生成的代码来讨论C++多态特性,特别说明了为什么多态特性被称为“动态联编”,它和“静态联编”有什么不同,它们的“动”与“静”体现在哪里。另外还对对象的虚表做了些验证。好了,希望本文能对你认识C++的多态性有一定的帮助!

上一页 1 2

评论   点击查看全部评论
您的评论参与,将为聚杰带来更大的动力!请不要吝啬!
快速回复
请使用文明语言让我们维护健康绿色网络环境!

匿名发表   验证码: