• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++技術交流

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              6 隨筆 :: 8 文章 :: 1 評論 :: 0 Trackbacks

            多態是指發出同樣的消息被不同類型的對象接收時產生完全不同的行為,簡單的說就是“一個接口,多種算法”。C++語言支持兩種多態性,一種是編譯時的多態,另一種是運行時的多態性。函數和運算符重載是在編譯時完成,稱之為靜態多態,也稱靜態聯編。運行時的多態性是通過虛函數實現,用虛函數實現的多態性稱為動態多態,也稱動態聯編。

            虛函數

            虛函數的定義格式
            在一個類中用關鍵字virtual說明在成員函數稱為虛函數,其定義的格式如下:
            virtual? 函數類型 函數名(形參表)

            函數體
            }
            定義虛函數就是為了實現多態類。在基類中某個成員函數被聲明為虛函數后,這個成員函數通常要在派生類中被重新定義,否則定義虛函數就沒有意義。在派生類中重新定義虛函數時,其函數原型必須與基類中的原型完全相同,否則編譯時會出錯或被當作函數重載處理。如果在基類中說明了虛函數,在它的派生類中與基類中虛函數說明相同的函數一定是虛函數,可以省略關鍵字virtual。


            虛析構函數

            析構函數是在該類對象消亡之前進行一些必要的清理工作,對于動態綁定的虛 函數必須用虛析構函數進行釋放。


            純虛函數和抽象類
            1、
            純虛函數

            純虛函數是一鐘特殊的虛函數,它只有函數的聲明,并沒有具體實現函數的功能。它的一般格式如下:
            virtual <函數返回類型><虛函數名稱><參數列表>=0;

            例:

            #include<iostream.h>
            class shape
            {
            public:
            ?shape(double dfx=0.0,double dfy=0.0);
            ??virtual void draw()=0;//純虛函數
            protected:
            ?double firstx;
            ?double firsty;
            };
            shape::shape(double dfx,double dfy)
            {
            ?firstx=dfx;
            ?firsty=dfy;
            }
            //直線類
            class line:public shape
            {
            public:
            ?line(double dfx=0.0,double dfy=0.0,double dsx=0.0,double dsy=0.0);
            ?void draw();
            protected:
            ?double secondx;
            ?double secondy;
            };
            line::line(double dfx,double dfy,double dsx,double dsy):shape(dfx,dfy)
            {
            ?secondx=dsx;
            ?secondy=dsy;
            }
            void line::draw()
            {
            ?cout<<"繪制一條直線,第一點坐標為:("
            ??<<firstx<<","<<firsty<<"),第二點坐標為:("<<secondx<<","<<secondy<<")"<<endl;
            }
            class circle:public shape
            {
            public:
            ?circle(double dfx=0.0,double dfy=0.0,double dr=0.0);
            ?void draw();
            protected:
            ?double radius;
            };
            circle::circle(double dfx,double dfy,double dr):shape(dfx,dfy)
            {
            ?radius=dr;
            }
            void circle::draw()
            {
            ?cout<<"繪制一個圓,圓心坐標為:("
            ??<<firstx<<","<<firsty<<"),圓的半徑為:"
            ??<<radius<<endl;
            }
            void drawing(shape *ps)
            {
            ?ps->draw();
            }
            void main()
            {
            ?line l(1.0,1.0,9.8,15.2);
            ?circle c(2.0,3.0,12.4);
            ?drawing(&l);
            ?drawing(&c);
            }


            抽象類
            帶有純虛函數的類也稱為抽象類。在繼承體系中,抽象類不能位于底層,它必須有派生類,并且其派生類中必須對抽象類中的純虛函數有具體的實現。一般,抽象類只是撕碎一些通用的操作接口,具體的實現由其派生類完成。

            posted on 2006-06-24 16:33 啊嵩 閱讀(190) 評論(0)  編輯 收藏 引用
            偷窥少妇久久久久久久久| 乱亲女H秽乱长久久久| 伊人久久综合精品无码AV专区| 无码人妻精品一区二区三区久久| 亚洲中文字幕无码久久2017| 99热成人精品免费久久| 一级A毛片免费观看久久精品| 一本一本久久aa综合精品| 成人精品一区二区久久| 2021国内精品久久久久久影院| 久久人人爽爽爽人久久久| 亚洲日本va午夜中文字幕久久| 久久夜色tv网站| 久久亚洲AV成人出白浆无码国产| 国产精品久久久久久久app | 国产精品综合久久第一页| 99久久免费国产精品热| 亚洲а∨天堂久久精品| 日韩久久久久中文字幕人妻| 偷窥少妇久久久久久久久| 99re这里只有精品热久久| 72种姿势欧美久久久久大黄蕉| 国产精品禁18久久久夂久| 大伊人青草狠狠久久| 中文字幕无码久久人妻| 国产精品禁18久久久夂久| 久久精品国产精品亚洲| 久久久久无码精品国产| 久久久久久免费视频| 久久人妻少妇嫩草AV无码专区| 亚洲色大成网站WWW久久九九| 777米奇久久最新地址| 亚洲人AV永久一区二区三区久久 | 一本久久精品一区二区| 久久亚洲精品人成综合网| 久久99精品久久久久久水蜜桃| 亚洲美日韩Av中文字幕无码久久久妻妇| 人妻丰满AV无码久久不卡| 精品多毛少妇人妻AV免费久久| .精品久久久麻豆国产精品| 久久精品卫校国产小美女|