freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c-c筆試面試題目3(編輯修改稿)

2024-09-26 16:03 本頁面
 

【文章內(nèi)容簡介】 C++與 C及其它語言的混合編程 。 明白了 C++中 extern C的設(shè)立動機(jī),我們下面來具體分析 extern C通常的使用技巧: extern C的慣用法 ( 1) 在 C++中引用 C 語言中的函數(shù)和變量,在包含 C 語言頭文件(假設(shè)為 ) 時(shí) ,需進(jìn)行下列處理: extern C { # i nclude } 而在 C 語言的頭文件中, 對其外部函數(shù)只能指定為 extern 類型 , C 語言中不支持 extern C聲明 ,在 .c文件中包含了 extern C時(shí)會出現(xiàn)編譯語法錯(cuò)誤。 C++引用 C 函數(shù)例子工程中包含的三個(gè)文件的源代碼如下: /* c 語言頭文件 : */ ifndef C_EXAMPLE_H define C_EXAMPLE_H extern int add(int x,int y)。 endif /* c 語言實(shí)現(xiàn)文件 : */ # i nclude int add( int x, int y ) { return x + y。 } // c++實(shí)現(xiàn)文件,調(diào)用 add: extern C { # i nclude } int main(int argc, char* argv[]) { add(2,3)。 return 0。 } 如果 C++調(diào)用一個(gè) C語言編寫的 .DLL時(shí),當(dāng)包括 .DLL的頭文件或聲明 接口函數(shù)時(shí),應(yīng)加 extern C { }。 ( 2) 在 C 中引用 C++語言中的函數(shù)和變量時(shí), C++的頭文件需添加 extern C,但是在 C 語言中不能直接引用聲明了 extern C的該頭文件,應(yīng)該僅將 C文件中將 C++中定義的 extern C函數(shù)聲明為 extern類型。 C 引用 C++函數(shù)例子工程中包含的三個(gè)文件的源代碼如下: //C++頭文件 ifndef CPP_EXAMPLE_H define CPP_EXAMPLE_H extern C int add( int x, int y )。 endif //C++實(shí)現(xiàn)文件 # i nclude int add( int x, int y ) { return x + y。 } /* C 實(shí)現(xiàn)文件 /* 這樣會編譯出錯(cuò):# i nclude */ extern int add( int x, int y )。 int main( int argc, char* argv[] ) { add( 2, 3 )。 return 0。 } 15題目的解答請參考 《 C++中 extern “C” 含義深層探索 》 注解: 16. 關(guān)聯(lián)、聚合 (Aggregation)以及組合 (Composition)的區(qū)別? 涉及到 UML 中的一些概念: 關(guān)聯(lián) 是表示兩個(gè)類的一般性聯(lián)系,比如 “ 學(xué)生 ” 和 “ 老師 ” 就是一種關(guān)聯(lián)關(guān)系; 聚合 表示 hasa 的關(guān)系,是一種相對松散的關(guān)系,聚合類不需要對被聚合類負(fù)責(zé),如下圖所示,用空的 菱形表示聚合關(guān)系: 從實(shí)現(xiàn)的角度講,聚合可以表示為 : class A {...} class B { A* a。 .....} 而 組合 表示 containsa的關(guān)系,關(guān)聯(lián)性強(qiáng)于聚合:組合類與被組合類有相同的生命周期,組合類要對被 組合類負(fù)責(zé),采用實(shí)心的菱形表示組合關(guān)系: 實(shí)現(xiàn)的形式是 : class A{...} class B{ A a。 ...} 參考文章: ,并簡單敘述之? 1. 封裝:將客觀事物抽象成類,每個(gè)類對自身的數(shù)據(jù)和方法實(shí)行 protection(private, protected,public) 2. 繼承:廣義的繼承有三種實(shí)現(xiàn)形式:實(shí)現(xiàn)繼承(指使用基類的屬性和方法而無需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實(shí)現(xiàn)代碼)、接口繼承 (僅使用屬性和方法,實(shí)現(xiàn)滯后到子類實(shí)現(xiàn))。前兩種(類繼承)和后一種(對象組合 =接口繼承以及純虛函數(shù))構(gòu)成了功能復(fù)用的兩種方式。 3. 多態(tài):是將父對象設(shè)置成為和一個(gè)或更多的他的子對象相等的技術(shù),賦值之后,父對象就可以根據(jù)當(dāng)前賦值給 它的子對象的特性以不同的方式運(yùn)作。簡單的說,就是一句話: 允許將子類類型的指針賦值給父類類型的指針。 18. 重載( overload)和重寫 (overried,有的書也叫做 “ 覆蓋 ” )的區(qū)別? ??嫉念}目。從定義上來說: 重載 :是指允許存在多個(gè) 同名函數(shù) ,而這些函數(shù)的 參數(shù)表不同 (或許參數(shù)個(gè)數(shù)不同,或許參數(shù)類型不同,或許兩者都不同)。 重寫 :是指子類重新定義復(fù)類虛函數(shù)的方法。 從實(shí)現(xiàn)原理上來說: 重載 : 編譯器根據(jù)函數(shù)不同的參數(shù)表,對同名函數(shù)的名稱做修飾,然后這些同名函數(shù)就成了不同的函數(shù)(至少對于編譯器來說是這樣的 )。如,有兩個(gè)同名函數(shù): function func(p:integer):integer。和 function func(p:string):integer。那么編譯器做過修飾后的函數(shù)名稱可能是這樣的: int_func、 str_func。對于這兩個(gè)函數(shù)的 調(diào)用,在編譯器間就已經(jīng)確定了,是 靜態(tài) 的。也就是說, 它們的地址在編譯期就綁定了(早綁定), 因此, 重載和多態(tài)無關(guān) ! 重寫:和多態(tài)真正相關(guān)。當(dāng)子類重新定義了父類的虛函數(shù)后,父類指針根據(jù)賦給它的不同的子類指針, 動態(tài)的調(diào)用 屬于子類的該函數(shù),這樣的函 數(shù)調(diào)用在編譯期間 是無法確定的 (調(diào)用的子類的虛函數(shù)的地址無法給出)。因此, 這樣的函數(shù)地址是在運(yùn)行期綁定的(晚綁定)。 19. 多態(tài)的作用? 主要是兩個(gè): 1. 隱藏實(shí)現(xiàn)細(xì)節(jié),使得代碼能夠模塊化;擴(kuò)展代碼模塊,實(shí)現(xiàn)代碼重用; 2. 接口重用:為了類在繼承和派生的時(shí)候 ,保證使用家族中任一類的實(shí)例的某一屬性時(shí)的正確調(diào)用 。 20. Ado 與 的相同與不同? 除 了 “ 能夠讓應(yīng)用程序處理存儲于 DBMS 中的數(shù)據(jù) “ 這一基本相似點(diǎn)外,兩者沒有太多共同之處。但是 Ado使用 OLE DB 接口并基于微軟的 COM 技術(shù),而 擁 有自己的 接口并且基于微軟的 .NET 體系架構(gòu)。眾所周知 .NET 體系不同于 COM 體系, 接口也就完全不同于 ADO 和 OLE DB 接口,這也就是說 和 ADO是兩種數(shù)據(jù)訪問方式。 提供對XML 的支持。 21. New delete 與 malloc free 的聯(lián)系與區(qū)別 ? 答案:都是在堆 (heap)上進(jìn)行動態(tài)的內(nèi)存操作。用 malloc 函數(shù)需要指定內(nèi)存分配的字節(jié)數(shù)并且不能初始化對象, new 會自動調(diào)用對象的構(gòu)造函數(shù)。 delete 會調(diào)用對象的 destructor,而 free 不會調(diào)用對象的 destructor. 22. define DOUBLE(x) x+x , i = 5*DOUBLE(5); i 是多少? 答案: i 為 30。 23. 有哪幾種情況只能用 intialization list 而不能用 assignment? 答案:當(dāng)類中含有 const、 reference 成員變量;基類的構(gòu)造函數(shù)都需要初始化表。 24. C++是不是類型安全的? 答案:不是。兩個(gè)不同類型的指針之間可以強(qiáng)制轉(zhuǎn)換(用 reinterpret cast)。 C是類型安全的。 25. main 函數(shù)執(zhí)行以前,還會執(zhí)行什么代碼? 答案:全局對象的構(gòu)造函數(shù)會在 main 函數(shù)之前執(zhí)行。 26. 描述內(nèi)存分配方式以及它們的區(qū)別 ? 1) 從靜態(tài)存儲區(qū)域分配 。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在。例如 全局變量, static 變量 。 2) 在棧上創(chuàng)建 。在執(zhí)行函數(shù)時(shí), 函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建 ,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲單元自動被釋放。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集。 3) 從堆上分配 , 亦稱動態(tài)內(nèi)存分配 。程序在運(yùn)行的時(shí)候用 malloc 或 new 申請 任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用 free 或 delete 釋放內(nèi)存。動態(tài)內(nèi)存的生存期由程序員決定,使用非常靈活,但問題也最多。 和 class 的區(qū)別 答案: struct 的成員默認(rèn)是公有的,而類的成員默認(rèn)是私有的。 struct 和 class 在其他方面是功能相當(dāng)?shù)摹? 從 感情上講,大多數(shù)的開發(fā)者感到類和結(jié)構(gòu)有很大的差別。感覺上結(jié)構(gòu)僅僅象一堆缺乏封裝和功能的開放的內(nèi)存位,而類就象活的并且可靠的社
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1