• <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 啊嵩 閱讀(189) 評論(0)  編輯 收藏 引用
            人妻无码久久一区二区三区免费| segui久久国产精品| 99久久人人爽亚洲精品美女| 无遮挡粉嫩小泬久久久久久久| 久久久这里只有精品加勒比| 亚洲&#228;v永久无码精品天堂久久 | 91亚洲国产成人久久精品网址| 国产V综合V亚洲欧美久久| 国产精品一区二区久久不卡| 99久久成人国产精品免费| 久久成人精品视频| 久久久精品无码专区不卡| 久久无码精品一区二区三区| 亚洲日本久久久午夜精品| 一本色道久久综合狠狠躁| 久久人人妻人人爽人人爽| 精品国际久久久久999波多野| 久久精品国产精品青草app| 99精品伊人久久久大香线蕉| 日本精品久久久久影院日本| 久久久久久久波多野结衣高潮 | 9999国产精品欧美久久久久久| 色综合久久久久| 青青草国产97免久久费观看| 久久久一本精品99久久精品88| 日韩AV无码久久一区二区| 99久久精品免费看国产免费| 午夜精品久久久久久| 日日噜噜夜夜狠狠久久丁香五月| 久久久久久狠狠丁香| 亚洲人成电影网站久久| 久久亚洲春色中文字幕久久久| 国产午夜久久影院| 伊人色综合久久天天网| 国产精品久久久久影视不卡| 欧美国产精品久久高清| 天天躁日日躁狠狠久久| 久久久精品人妻无码专区不卡| 久久精品国产久精国产思思| 香蕉99久久国产综合精品宅男自 | 欧美久久一级内射wwwwww.|