資源描述:
《C_語言對C語言的擴充》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第卷第期微計算機應(yīng)用,年,月十語言對語言的擴充藍(lán)雯飛中南民族學(xué)院計算機科學(xué)學(xué)院武漢。。摘要語言,十語言除了在語言的基礎(chǔ)上擴充了面向?qū)ο筇卣魇钦Z言的超集,。、外還擴充了非面向?qū)ο筇卣鞅疚挠懻摿耸Z言不同于語言的非面向?qū)ο筇卣髅?。向?qū)ο蟪绦蛟O(shè)計中的二義性和十語言的文件操作并給出了一些應(yīng)用例子關(guān)銳詞十語言引用二義性文件操作十語言不同于語言的非面向?qū)ο筇卣饕脵C制,。,在語言中引用是標(biāo)識對象的一種機制通過引用聲明可以使程序中的一個標(biāo)識,。,符與它所標(biāo)識的對象之間的對應(yīng)關(guān)系在程序運行時確定從而提高程序的靈活性因此引,,用常用作函數(shù)的形式參數(shù)在進(jìn)行引用調(diào)用傳遞時調(diào)用者只是將實參對象的標(biāo)識傳
2、給,,,了引用形參使得引用形參標(biāo)識的是實參對象而且這種標(biāo)識關(guān)系是動態(tài)確定的即在程序,,運行時根據(jù)調(diào)用時所用實參對象的不同而引用不同的實參對象因而提高了程序的靈活性節(jié),,。約了形參的內(nèi)存開銷特別是當(dāng)實參對象的結(jié)構(gòu)較復(fù)雜時尤其明顯川為了使函數(shù)調(diào)用表達(dá),函數(shù),式能作為左值表達(dá)式使用必須返回引用注意函數(shù)不能返回函數(shù)內(nèi)聲明的局部對象的引用。例如,〔,〔〕《〔〕,〔,,,,阮〕函數(shù)特征十函數(shù)的聲明形式與定義形式和是,一致的語言在語言的基礎(chǔ)上擴充了一些函數(shù)特征,使。,十成為更好用的如允許對函數(shù)進(jìn)行重載可以將函數(shù)定義為內(nèi)聯(lián)函數(shù),函數(shù)可帶缺省形參等。,。函數(shù)重載是指對已有的函數(shù)重新定義或者說個標(biāo)識
3、符可以為多個函數(shù)命名川例如,,,當(dāng)程序中對重載函數(shù)進(jìn)行調(diào)用時,由編譯器根據(jù)形參的類型和個數(shù)確定函數(shù)調(diào)用發(fā)生時應(yīng)執(zhí)行的函數(shù)代碼,這種確定也稱靜態(tài)聯(lián)編靜態(tài)綁定。注意不能將重載函數(shù)聲明為只是,,。返回類型不同的函數(shù)如用關(guān)鍵字定義的函數(shù),稱內(nèi)聯(lián)函數(shù)。使用內(nèi)聯(lián)函數(shù)時應(yīng)注意以下幾點①編譯器將程序中出現(xiàn)的對內(nèi)聯(lián)函數(shù)的調(diào)用使用內(nèi)聯(lián)函數(shù)體替換②內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函一一,一一。本文于收到收到修改稿第期微計算機應(yīng)用數(shù)被第次調(diào),,用之前③最好只對短而使用頻繁的函數(shù)使用可提高程序運行效率但以增加目標(biāo)代碼的長度為代價換取④內(nèi)聯(lián)函數(shù)體不能有循環(huán)語句和語句。在,十的函數(shù)聲明中可以為個或多個形參指定缺省
4、值該函數(shù)稱為帶缺省參數(shù)的函,,。,數(shù)例如一在使用帶缺省參數(shù)函數(shù)時應(yīng)注意①除內(nèi)聯(lián)函數(shù)外,一般在函數(shù)原型中指定缺省值在函數(shù)定義中不允許再指定缺省值②在個缺省形參的右,。,。邊不能出現(xiàn)非缺省參數(shù)如是非法聲明此外,還允許用戶定義帶不確定參數(shù)個數(shù)的函數(shù)。,,所有語言提供的函數(shù)特征都提高了程序的靈活性和可擴充性程序設(shè)計人員在定義函數(shù)時根據(jù)需要應(yīng)盡量使用這些特征。和一操作符操作符,用來在程序運行時根據(jù)需要隨機創(chuàng)建對象這樣的對象也稱堆對象而,。,操作符正好相反是將由創(chuàng)建的堆對象刪除更經(jīng)常的情況是當(dāng)只能在程序運行時才能知道需要建立多少對象來存儲數(shù)據(jù)時,就應(yīng)使用創(chuàng)建堆對象。在使用這個操作符時還應(yīng)注意
5、①刪除的必須是由創(chuàng)建的對象②當(dāng)用「〕操作符建立多維數(shù)組,,。時除第一維外必須指定每維的大小“”全局操作符二語言規(guī)定,如果在程序的內(nèi)層作用域中聲明了與外層作用域中同名的標(biāo)識符,那么,。一,在內(nèi)層作用域中外層作用域中聲明的標(biāo)識符是不可見的卜十語言提供了全局操作符使得程序在內(nèi)層作用域里可訪問到外層作用域中聲明的同名標(biāo)識符。例如《,,一”《《程序執(zhí)行結(jié)果為一二《‘飯’‘《,《異常處理機制。,,異常是指個函數(shù)在執(zhí)行的過程出現(xiàn)了不得不中斷操作的情況如除法操作除數(shù)為。。當(dāng)棧為空時取棧頂元素等十語言提供異常處理機制包括捕獲異常語句語句和引。,,發(fā)異常語句語句來處理異常當(dāng)函數(shù)出現(xiàn)異常時用語句表示將
6、引發(fā)異常調(diào)用者用語句表達(dá)如何處理異常,這種異常處理機制能提高程序的可靠性。面向?qū)ο蟪绦蛟O(shè)計中的二義性及其解決方法有關(guān)面向?qū)ο筇卣鞯挠懻搮⒁娢墨I(xiàn)」。程序員在進(jìn)行十十面向?qū)ο蟪绦蛟O(shè)計,,,,時多繼承使用頻繁然而使用多繼承容易出現(xiàn)二義性問題在多繼承情況下若在一個表達(dá)式中將引用基類中不止一個成員,則這種對基類中成員的訪問是二義的。下面討論二義性的產(chǎn)生及解決方法。派生類的不同基類有同名的成員,派生類的不同基類有同名的成員且派生類和基類無同名的成員在下述兩種情況下將出現(xiàn)二義性。派生類的對象引用同名的基類成員。例如·‘‘’’‘“一微計算機應(yīng)用年、,,,川對于表達(dá)式,是類的對象,引用類的還是類的
7、編譯器在編譯時無法確定。下面我們給出解決方法①使用成員限定表達(dá)式例如,對于表達(dá)式,。表示引用的而對于表達(dá)式表示引用的②使用名字支配原則,。,在類中聲明一個同名的函數(shù)該名字將支配類及類同名的函數(shù)這時表達(dá)式將訪問支配者類的。助在派生類中引用同名的基類成員。,記,函數(shù)調(diào)例如將類的成員函數(shù)實現(xiàn)為?用表達(dá)式將調(diào)用的或的使編譯器在編譯時無法確定。使用成員限定表達(dá)式可以解決這種二義性,,。例如二二以這樣實現(xiàn)二二弋成員限定表達(dá)式明確指出將訪問哪個類的成員,這樣,就不會給編譯器在編譯時帶來模糊現(xiàn)象