• <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)  編輯 收藏 引用
            精品久久人人做人人爽综合| 久久久噜噜噜www成人网| 精品久久久久久久久久中文字幕 | 亚洲国产精品久久| 99久久超碰中文字幕伊人| 久久e热在这里只有国产中文精品99| 国产成人久久777777| 久久无码国产| 久久久中文字幕| 久久99精品久久久大学生| 色偷偷888欧美精品久久久| 久久人人青草97香蕉| 秋霞久久国产精品电影院| 中文国产成人精品久久不卡| 久久久久久久99精品免费观看| 久久嫩草影院免费看夜色| AV狠狠色丁香婷婷综合久久| 久久久无码精品亚洲日韩蜜臀浪潮| 久久噜噜电影你懂的| 婷婷伊人久久大香线蕉AV| 亚洲国产成人久久精品99| 久久最近最新中文字幕大全| 久久久久99精品成人片试看| 久久久久人妻一区二区三区| 久久久精品波多野结衣| 久久综合综合久久97色| 99国产精品久久久久久久成人热| 热99RE久久精品这里都是精品免费| 9191精品国产免费久久| 青青青伊人色综合久久| 男女久久久国产一区二区三区| 99久久香蕉国产线看观香| 色综合久久久久综合99| 久久久久噜噜噜亚洲熟女综合 | 亚洲国产香蕉人人爽成AV片久久| 久久久91精品国产一区二区三区| 成人资源影音先锋久久资源网| 蜜臀久久99精品久久久久久小说 | 国内高清久久久久久| 精品久久久无码人妻中文字幕| 久久免费看黄a级毛片|