分享

C++多态性

 quandsu 2013-08-20

▌多态(Ploymorphism):当基类指针指向子类对象的时候,调用函数符合对象的真实身份的表现叫多态。

★★★为了实现动态绑定,当类里面至少有一个虚函数的时候,编译器会为这个类生成一个虚表。同时会添加一个虚指针到这个虚表里面,当调用虚函数时,对象通过虚指针(virtual pointer)找到虚表,然后遍历虚表,找到和这个函数同名的函数指针,函数指针指向这个虚函数的入口地址,从而将虚函数调起。

★virtual pointer(虚指针)------->virtual table(虚表)-------p------->virtual function(虚函数)

例:
 class Base
 {
 public:
  virtual void fun();
 };

 class Derived : public Base
 {
 public:
  void fun();
  int a;
  int b;
 };

 Derived d;  //d有三个数据成员——a, b, 虚指针<隐藏成员,只有当类里面有虚函数的时候才会自动生成>;

 Base* b=&d;
 b->fun();  //调用子类的fun();

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多