<七>理解多态

打印 上一主题 下一主题

主题 525|帖子 525|积分 1575

理解多态
多种多样的形态(静态多态,动态多态)
静态多态(编译时期)
1:函数重载
  1. bool comparet(int ,int); bool compare(double,double);
  2. compare(100,100)->compare_int_int();
  3. compare(1.0,2.0)->comapre_double_double();
复制代码
2:模板
  1. template<typename T>
  2. bool compare(T a,T b){
  3.     return a>b;
  4. }
  5. compare<int>(20,10); =>int 实例化compare(int x, int y); 发生在编译时期
  6. compare<double>(100.0,50.0); 实例化compare(double x,double y);发生在编译器
复制代码
动态多态(运行时期)
在继承结构中,基类指针(引用),指向派生类对象,通过该指针(引用)调用同名覆盖方法(虚函数)
基类指针指向哪个派生类对象,就会调用哪个派生类对象的同名覆盖方法,称为多态
pBase->show()多态底层是通过动态绑定来实现的  pbase->访问谁的vfptf->继续访问vftable->拿到最终的虚函数地址->完成调用
继承的好处?
1:可以做代码的复用
2:在基类中提供统一的虚函数接口,让派生类进行重写,然后就可以使用多态.

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表