亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C++語言程序設(shè)計中多態(tài)問題分析

        2017-03-06 20:48:25李欣然趙山林
        計算機時代 2017年2期

        李欣然+趙山林

        摘 要: C++語言程序設(shè)計課程中,多態(tài)性分為兩類。一是靜態(tài)多態(tài),通過函數(shù)重載實現(xiàn),解決自定義數(shù)據(jù)類型運算問題;二是動態(tài)多態(tài),通過虛函數(shù)實現(xiàn),提高了程序的可擴充性。通過實例分析出利用函數(shù)重載實現(xiàn)靜態(tài)多態(tài)的方法以及利用虛函數(shù)產(chǎn)生動態(tài)多態(tài)的條件。

        關(guān)鍵詞: C++語言程序設(shè)計; 靜態(tài)多態(tài); 動態(tài)多態(tài); 虛函數(shù)

        中圖分類號:TP311 文獻標(biāo)志碼:A 文章編號:1006-8228(2017)02-57-0

        0 引言

        多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計的一個重要特征。從系統(tǒng)實現(xiàn)的角度看,多態(tài)性分為兩類:靜態(tài)多態(tài)性和動態(tài)多態(tài)性[1]。靜態(tài)多態(tài)性是通過函數(shù)重載實現(xiàn)的。由函數(shù)重載和運算符重載形成的多態(tài)性屬于靜態(tài)多態(tài)性。動態(tài)多態(tài)性是指編譯時不能確定調(diào)用的是哪個函數(shù),而在程序運行過程中才動態(tài)地確定具體操作對象。動態(tài)多態(tài)又稱運行時的多態(tài)性。

        1 靜態(tài)多態(tài)性

        靜態(tài)多態(tài)性是程序編譯時就知道調(diào)用函數(shù)的全部信息,因此,在程序編譯時系統(tǒng)就能決定要調(diào)用的是哪個函數(shù)。靜態(tài)多態(tài)性又稱編譯時的多態(tài)性。靜態(tài)多態(tài)性的函數(shù)調(diào)用速度快、效率高,但缺乏靈活性,在程序運行前就已決定了執(zhí)行的函數(shù)和方法。下面介紹靜態(tài)多態(tài)的實現(xiàn)方法。

        1.1 函數(shù)重載

        C++允許用同一函數(shù)名定義多個函數(shù),這些函數(shù)的參數(shù)類型或者參數(shù)個數(shù)不同,這就是函數(shù)的重載。重載函數(shù)的參數(shù)個數(shù),參數(shù)類型,或參數(shù)順序三者中必須至少有一種不同,函數(shù)返回值類型可以相同也可以不同。下列程序的功能是利用函數(shù)重載求兩個整數(shù)或三個整數(shù)最大數(shù)。

        函數(shù)重載以后,根據(jù)實參的類型及個數(shù)決定調(diào)用哪個重載的函數(shù)。上例中實參是兩個就調(diào)用求兩個數(shù)最大值函數(shù),同理實參是三個就調(diào)用求三個數(shù)最大值得函數(shù)。

        當(dāng)幾個函數(shù)的功能是相同的或者相近的,只是參數(shù)類型或者參數(shù)個數(shù)不同,可以考慮定義函數(shù)重載。同一個函數(shù),通過重載可以實現(xiàn)不同的功能。

        1.2 運算符重載

        運算符重載也屬于函數(shù)重載,解決的是自定義數(shù)據(jù)類型的運算問題。運算符重載既可以重載為類的成員函數(shù)也可以重載為類的友元函數(shù)。下列程序的功能是通過運算符重載為類的成員函數(shù)完成復(fù)數(shù)的算術(shù)運算。

        C++中的運算符只能對基本數(shù)據(jù)類型進行運算。復(fù)數(shù)是一種自定義數(shù)據(jù)類型,是不能用C++提供的運算符完成算術(shù)運算的。自定義數(shù)據(jù)類型--復(fù)數(shù)類只有通過運算符重載才能利用C++已有的運算符完成運算。所以,運算符重載解決的是自定義數(shù)據(jù)類型的運算問題。同理通過對流插入運算符和流提取運算符重載可以解決自定義數(shù)據(jù)類型的輸入輸出問題。

        2 動態(tài)多態(tài)性

        動態(tài)多態(tài)性是指在編譯過程中不能確定調(diào)用的是哪個函數(shù),只有在程序運行過程中才能確定調(diào)用具體函數(shù)的過程。它又稱運行時的多態(tài)性。動態(tài)多態(tài)性是通過虛函數(shù)( virtual function)實現(xiàn)的。面向?qū)ο髮崿F(xiàn)動態(tài)多態(tài)應(yīng)滿足三個條件。首先,動態(tài)關(guān)聯(lián)必須存在于類的繼承結(jié)構(gòu)中,也就是說有基類有派生類。其次,基類中某一成員函數(shù)被定義為虛函數(shù),且該虛函數(shù)在派生類中有不同的實現(xiàn)。第三,利用指針或引用調(diào)用該虛函數(shù)才能產(chǎn)生動態(tài)關(guān)聯(lián)。

        下列程序的功能是通過虛函數(shù)完成動態(tài)關(guān)聯(lián)。

        上例中p1. Area()是通過對象名調(diào)用虛函數(shù)產(chǎn)生靜態(tài)關(guān)聯(lián),對象名調(diào)用的是自己所屬類的虛函數(shù)。fun(rect)調(diào)用的是派生類的Area()函數(shù),而fun(p1)調(diào)用的是基類的Area()函數(shù)。通過指針或引用調(diào)用虛函數(shù)才能產(chǎn)生動態(tài)關(guān)聯(lián)。

        3 結(jié)論

        本文分析了《C++語言程序設(shè)計》課程中多態(tài)問題。多態(tài)分為靜態(tài)多態(tài)和動態(tài)多態(tài)。通過實例分析出靜態(tài)多態(tài)的特點和作用,以及靜態(tài)多態(tài)的實現(xiàn)方法。通過實例分析出動態(tài)多態(tài)的特征,以及實現(xiàn)動態(tài)關(guān)聯(lián)的條件。幫助讀者理解面向?qū)ο蟪绦蛟O(shè)計語言的基本特征-----多態(tài)的含義和作用。

        參考文獻(Reference):

        [1] 譚浩強.C++程序設(shè)計[M].清華大學(xué)出版社,2015.

        [2] 鄭莉.C++語言程序設(shè)計(第4版)[M].清華大學(xué)出版社,2011.

        [3] 錢能.C++程序設(shè)計教程設(shè)計思想與實現(xiàn)[M].清華大學(xué)出版

        社,2009.

        [4] 姚林.C++程序設(shè)計[M].人民郵電出版社,2011.

        日本大片免费观看视频| 91福利国产在线观一区二区| 一本一本久久a久久精品综合| 亚洲在线一区二区三区| 91精品国产高清久久福利| 日本a级特级黄色免费| 国产极品视觉盛宴| 免费看黄a级毛片| 国产精品区一区第一页| 国产成人乱色伦区小说| 国产精品国产三级国产专区51区| 中文字幕女优av在线| 欧美乱妇高清无乱码在线观看| 亚洲香蕉视频| 午夜爽毛片| 亚洲一区二区三区资源| 亚洲av无码国产精品色| 日韩aⅴ人妻无码一区二区| 色一情一乱一伦一区二区三欧美| 中文字幕一区二区三区人妻精品 | 国产久久久自拍视频在线观看| 亚洲国产精品高清在线| 亚洲妇女无套内射精| 学生妹亚洲一区二区| 黑人巨大亚洲一区二区久| 女优av性天堂网男人天堂| 成年性生交大片免费看| 国产精品久久久| 国产主播无套内射一区| 国产精品自拍视频在线| 国产七十六+老熟妇| 日本高清色倩视频在线观看| 精品免费人伦一区二区三区蜜桃| 国产少妇一区二区三区| 蜜桃臀av一区二区三区| 免费女人高潮流视频在线观看| 99久热re在线精品99 6热视频| 亚洲区一区二区中文字幕| 国产精品熟女视频一区二区三区| 日本大骚b视频在线| 亚洲国产高清在线一区二区三区|