<dl id="opymh"></dl>

<div id="opymh"></div>
      <div id="opymh"><tr id="opymh"></tr></div>

        <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

        <em id="opymh"></em>

        <em id="opymh"><ol id="opymh"></ol></em>

              频道栏目
              首页 > 程序开发 > 软件开发 > C++ > 正文
              关于C++多态的基础知识讲解
              2018-07-27 15:23:12         来源c243311364的博客  
              收藏   我要投稿

              一.多态性有两种表现形式

              1)编译时多态性同一对象在收到相同的消息却产生不同的函数调用一般通过函数重载来实现在编译时就实现了绑定属于静态绑定

              2)运行时多态性不同对象在收到相同消息时产生不同的动作一般通过虚函数来实现

              二.多态和非多态的实质区别

              函数地址为动态绑定还是静态绑定

              三.多态的作用

              对于封装可以使代码模块化

              对于?#22363;У?#21487;以扩展已经存在的代码

              而多态是为了接口重用

              四.多态最常见的用法

              最常见的用法就是声明基类的指针利用该指针指向?#25105;?#19968;个子类对象调用相应的虚函数可以根据指向的子类的不同而实现不同的方法如果没有使用虚函数的话即没有利用C++多态性则利用基类指针调用相应的函数的时候将总被限制在基类函数本身而无法调用到子类中被重写过的函数因为没有多态性函数调用的地址将是一定的而固定的地址将始终调用到同一个函数这就无法实现一个接口多种方法的目的了

              五.扩展了解隐藏规则

              本来仅仅区别重载与覆盖并不算困难但是C++的隐藏规则使问题复杂性陡然增加

              这里“隐藏”是指派生类的函数屏蔽了与其同名的基类函数规则如下

              **1)如果派生类的函数与基类的函数同名但是参数不同此时不论有无virtual关键字基类的函数将被隐藏(注意别和重载混淆)

              2)如果派生类的函数与基类的函数相同但是基类没有virtual关键字那么基类的函数将被隐藏(注意别和覆盖混淆)**

              点击复制链接 与好友分享!回本站首页
              上一篇C++关于左值右值左值引用右值引用std::move, std::foward等知识讲解
              下一篇C++编程之引用和拷贝构造函数按值传递和返回位拷贝与初始化等实例
              相关文章
              图文推荐
              点击排行

              关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报?#34892;?/a>

              版权所有: 红黑联盟--致力于做实用的IT技术学习网站

              ٷͧü
              <dl id="opymh"></dl>

              <div id="opymh"></div>
                  <div id="opymh"><tr id="opymh"></tr></div>

                    <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                    <em id="opymh"></em>

                    <em id="opymh"><ol id="opymh"></ol></em>

                          <dl id="opymh"></dl>

                          <div id="opymh"></div>
                              <div id="opymh"><tr id="opymh"></tr></div>

                                <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                                <em id="opymh"></em>

                                <em id="opymh"><ol id="opymh"></ol></em>