Assembly继承和多态.pdfVIP

  • 6
  • 0
  • 约3.1千字
  • 约 9页
  • 2018-06-01 发布于江苏
  • 举报
Assembly 继承和多态 继承 (Inheritance)允许⼀个类继承另⼀个类的数据和成员函数。例如, 考虑图 7 .19 中 的代码。它展⽰了两个类,A和B ,其中类B 通过继承类A得到的。程序的输出如 下: Size of a: 4 Offset of ad: 0 Size of b: 8 Offset of ad: 0 Offset of bd: 4 A::m() A::m() 注意,两个类的数据成员ad(B通过继承A得到的)在相同的偏移处。这 ⾮常重要的, 因为f函数将传递⼀个指针到⼀个A对象或任意⼀个由A派⽣( 也就 ,通过继承得到) 的对象类型中。图 7 . 0展⽰了此函数的(编辑过的)汇编代码(gcc得到的) 。 注意在输出中,a和b对象调⽤的都 A的成员函数m 。从汇编程序中,我们可以看到 对A::m()的调⽤被硬编码到函数中了。对于真正的⾯向对象编程,成员函数的调⽤取 决于传递给函数的对象类型 什么。这就 所谓的 多态 。缺省情况下,C++关掉了这 个特性。你可以使⽤virtual 关键字来激活它。图 7 . 1展⽰了如何修改这两个类。其它 代码不需要修改。多态可以⽤许多⽅法来实现。不幸的 ,当在以这种⽅法书写的时 候,gcc的实现⽅法正处在

文档评论(0)

1亿VIP精品文档

相关文档