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

正文內(nèi)容

c語言面試大全1(編輯修改稿)

2025-06-09 18:48 本頁面
 

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