友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第36章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




    。      明明都是调用          ::      (其实也就是          ::      ),却能够 



                 rect1 m_color  rect2。m_color           this  

有条不紊地分别处理            。      和            ?答案在于所谓的          指针。下 



一节我就会提到它。 



                                                                                   59 


…………………………………………………………Page 122……………………………………………………………

3。  既然所有类别都有displ ay 动作,把它提升到老祖宗CShape 去,然后再继承 



  之,好吗?不好,因为displ ay  函数应该因不同的形状而动作不同。 



     displ ay                               f or    while 

4。 如果      不能提升到基础类别去,我们就不能够以一个                循环或 



  循环干净漂亮地完成下列动作(此种动作模式在对象导向程序方法中重要无 



  比): 



     CShape shapes'5'; 



      。。。 //   5   shapes  

            令  个       各为矩形、四方形、椭圆形、圆形、三角形 



     for  (int i=0; im_color = color; } 



          }; 



    我们拨开了第一道疑云。 



                                                                                      61 


…………………………………………………………Page 124……………………………………………………………

              虚拟函数与多态(Polymorphism) 



                  我曾经说过,前一个例子没有办法完成这样的动作: 



                      CShape shapes'5'; 



                      。。。 //   5   shapes  

                             令  个       各为矩形、四方形、椭圆形、圆形、三角形 



                      for  (int i=0; idisplay(); 



                 Ellipse   Square  Triangle  Rect    Circle   Square   Circle   Circle 



                  为了支持这种能力,C++ 提供了所谓的虚拟函数(virtual function )。 



                     +    ?!  

                  虚拟  函数    听起来很恐怖的样子。如果你了解汽车的离合器踩下去代表汽车空档, 



                  空档表示失去引擎本身的牵制力,你就会了解「高速行驶间煞车绝不能踩离合器」的道 



                  理并矢志遵行。好,如果你真的了解为什么需要虚拟函数以及什么情况下需要它,你就 



                  能够掌握它的灵魂与内涵,真正了解它的设计原理,并且发现认为它非常人性。并且, 



                  真正知道怎么用它。 



62 


…………………………………………………………Page 125……………………………………………………………

让我用另一个例子来展开我的说明。这个范例灵感得自Visual C++ 手册之一: 



Introdoction to C++。假设你的类别种类如下: 



                                                   CEmployee 

                                                    CEmployee 



                                          CManager              CWage 

                                           CManager              CWage 



                                                                CSales 

                                                                 CSales 



本图以Visual C++ 之「Class Info 窗口」获得 



程序代码实作如下: 



#0001  #include  

#0002 

#0003  //……………………………………………………………………………………………………………………………………………………………………

#0004  class CEmployee   // 职员 

#0005  { 

#0006  private: 

#0007  char m_name'30'; 

#0008 

#0009  public: 

#0010 
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!