![c++開(kāi)發(fā)工程師常用面試題_第1頁(yè)](http://file4.renrendoc.com/view/0787e8953527faa9120d11aa6474b9e1/0787e8953527faa9120d11aa6474b9e11.gif)
![c++開(kāi)發(fā)工程師常用面試題_第2頁(yè)](http://file4.renrendoc.com/view/0787e8953527faa9120d11aa6474b9e1/0787e8953527faa9120d11aa6474b9e12.gif)
![c++開(kāi)發(fā)工程師常用面試題_第3頁(yè)](http://file4.renrendoc.com/view/0787e8953527faa9120d11aa6474b9e1/0787e8953527faa9120d11aa6474b9e13.gif)
![c++開(kāi)發(fā)工程師常用面試題_第4頁(yè)](http://file4.renrendoc.com/view/0787e8953527faa9120d11aa6474b9e1/0787e8953527faa9120d11aa6474b9e14.gif)
![c++開(kāi)發(fā)工程師常用面試題_第5頁(yè)](http://file4.renrendoc.com/view/0787e8953527faa9120d11aa6474b9e1/0787e8953527faa9120d11aa6474b9e15.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-.z.1. 面向?qū)ο蟮某绦蛟O(shè)計(jì)思想是什么?答:把數(shù)據(jù)結(jié)構(gòu)和對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的方法封裝形成一個(gè)個(gè)的對(duì)象。2. 什么是類(lèi)?答:把一些具有共性的對(duì)象歸類(lèi)后形成一個(gè)集合,也就是所謂的類(lèi)。3. 對(duì)象都具有的二方面特征是什么?分別是什么含義?答:對(duì)象都具有的特征是:靜態(tài)特征和動(dòng)態(tài)特征。靜態(tài)特征是指能描述對(duì)象的一些屬性,動(dòng)態(tài)特征是指對(duì)象表現(xiàn)出來(lái)的行為4. 在頭文件中進(jìn)行類(lèi)的聲明,在對(duì)應(yīng)的實(shí)現(xiàn)文件中進(jìn)行類(lèi)的定義有什么意義?答:這樣可以提高編譯效率,因?yàn)榉珠_(kāi)的話(huà)只需要編譯一次生成對(duì)應(yīng)的.obj文件后,再次應(yīng)用該類(lèi)的地方,這個(gè)類(lèi)就不會(huì)被再次編譯,從而大大提高了效率。5. 在類(lèi)的部定義成員函數(shù)的函數(shù)體,這種函數(shù)會(huì)具備那種屬性?答:這種函數(shù)會(huì)自動(dòng)為聯(lián)函數(shù),這種函數(shù)在函數(shù)調(diào)用的地方在編譯階段都會(huì)進(jìn)行代碼替換。6. 成員函數(shù)通過(guò)什么來(lái)區(qū)分不同對(duì)象的成員數(shù)據(jù)?為什么它能夠區(qū)分?答:通過(guò)this指針來(lái)區(qū)分的,因?yàn)樗赶虻氖菍?duì)象的首地址。7. C++編譯器自動(dòng)為類(lèi)產(chǎn)生的四個(gè)缺省函數(shù)是什么?答:默認(rèn)構(gòu)造函數(shù),拷貝構(gòu)造函數(shù),析構(gòu)函數(shù),賦值函數(shù)。8. 拷貝構(gòu)造函數(shù)在哪幾種情況下會(huì)被調(diào)用?答:1.當(dāng)類(lèi)的一個(gè)對(duì)象去初始化該類(lèi)的另一個(gè)對(duì)象時(shí);2.如果函數(shù)的形參是類(lèi)的對(duì)象,調(diào)用函數(shù)進(jìn)行形參和實(shí)參結(jié)合時(shí);3.如果函數(shù)的返回值是類(lèi)對(duì)象,函數(shù)調(diào)用完成返回時(shí)。9. 構(gòu)造函數(shù)與普通函數(shù)相比在形式上有什么不同?(構(gòu)造函數(shù)的作用,它的聲明形式來(lái)分析)答:構(gòu)造函數(shù)是類(lèi)的一種特殊成員函數(shù),一般情況下,它是專(zhuān)門(mén)用來(lái)初始化對(duì)象成員變量的。構(gòu)造函數(shù)的名字必須與類(lèi)名相同,它不具有任何類(lèi)型,不返回任何值。10. 什么時(shí)候必須重寫(xiě)拷貝構(gòu)造函數(shù)?答:當(dāng)構(gòu)造函數(shù)涉及到動(dòng)態(tài)存儲(chǔ)分配空間時(shí),要自己寫(xiě)拷貝構(gòu)造函數(shù),并且要深拷貝。11. 構(gòu)造函數(shù)的調(diào)用順序是什么?答:1.先調(diào)用基類(lèi)構(gòu)造函數(shù)2.按聲明順序初始化數(shù)據(jù)成員3.最后調(diào)用自己的構(gòu)造函數(shù)。12. 哪幾種情況必須用到初始化成員列表?答:類(lèi)的成員是常量成員初始化;類(lèi)的成員是對(duì)象成員初始化,而該對(duì)象沒(méi)有無(wú)參構(gòu)造函數(shù)。類(lèi)的成員為引用時(shí)。13. 什么是常對(duì)象?答:常對(duì)象是指在任何場(chǎng)合都不能對(duì)其成員的值進(jìn)行修改的對(duì)象。14. 靜態(tài)函數(shù)存在的意義?答:靜態(tài)私有成員在類(lèi)外不能被訪問(wèn),可通過(guò)類(lèi)的靜態(tài)成員函數(shù)來(lái)訪問(wèn);當(dāng)類(lèi)的構(gòu)造函數(shù)是私有的時(shí),不像普通類(lèi)那樣實(shí)例化自己,只能通過(guò)靜態(tài)成員函數(shù)來(lái)調(diào)用構(gòu)造函數(shù)。15. 在類(lèi)外有什么辦法可以訪問(wèn)類(lèi)的非公有成員?答:友元,繼承,公有成員函數(shù)。16. 什么叫抽象類(lèi)?答:不用來(lái)定義對(duì)象而只作為一種基本類(lèi)型用作繼承的類(lèi)。17. 運(yùn)算符重載的意義?答:為了對(duì)用戶(hù)自定義數(shù)據(jù)類(lèi)型的數(shù)據(jù)的操作與定義的數(shù)據(jù)類(lèi)型的數(shù)據(jù)的操作形式一致。18. 不允許重載的5個(gè)運(yùn)算符是哪些?答:1. .*(成員指針訪問(wèn)運(yùn)算符號(hào))2. ::域運(yùn)算符3. Sizeof長(zhǎng)度運(yùn)算符號(hào)4. ?:條件運(yùn)算符號(hào)5..(成員訪問(wèn)符)19. 運(yùn)算符重載的三種方式?答:普通函數(shù),友元函數(shù),類(lèi)成員函數(shù)。20. 流運(yùn)算符為什么不能通過(guò)類(lèi)的成員函數(shù)重載?一般怎么解決?答:因?yàn)橥ㄟ^(guò)類(lèi)的成員函數(shù)重載必須是運(yùn)算符的第一個(gè)是自己,而對(duì)流運(yùn)算的重載要求第一個(gè)參數(shù)是流對(duì)象。一般通過(guò)友元來(lái)解決。21. 賦值運(yùn)算符和拷貝構(gòu)造函數(shù)的區(qū)別與聯(lián)系?答:相同點(diǎn):都是將一個(gè)對(duì)象copy到另一個(gè)中去。不同點(diǎn):拷貝構(gòu)造函數(shù)涉及到要新建立一個(gè)對(duì)象。22. 在哪種情況下要調(diào)用該類(lèi)的析構(gòu)函數(shù)?答:對(duì)象生命周期結(jié)束時(shí)。23. 對(duì)象間是怎樣實(shí)現(xiàn)數(shù)據(jù)的共享的?答:通過(guò)類(lèi)的靜態(tài)成員變量來(lái)實(shí)現(xiàn)的。靜態(tài)成員變量占有自己獨(dú)立的空間不為*個(gè)對(duì)象所私有。24. 友元關(guān)系有什么特性?答:?jiǎn)蜗虻?,非傳遞的,不能繼承的。25. 對(duì)對(duì)象成員進(jìn)行初始化的次序是什么?答:它的次序完全不受它們?cè)诔跏蓟碇写涡虻挠绊?,只有成員對(duì)象在類(lèi)中聲明的次序來(lái)決定的。26. 類(lèi)和對(duì)象之間的關(guān)系是什么?答:類(lèi)是對(duì)象的抽象,對(duì)象是類(lèi)的實(shí)例。27. 對(duì)類(lèi)的成員的訪問(wèn)屬性有什么?答:public,protected,private。28. constchar*p,char*constp;的區(qū)別如果const位于星號(hào)的左側(cè),則const就是用來(lái)修飾指針?biāo)赶虻淖兞?,即指針指向?yàn)槌A?;如果const位于星號(hào)的右側(cè),const就是修飾指針本身,即指針本身是常量。29. 是不是一個(gè)父類(lèi)寫(xiě)了一個(gè)virtual函數(shù),如果子類(lèi)覆蓋它的函數(shù)不加virtual,也能實(shí)現(xiàn)多態(tài)"virtual修飾符會(huì)被隱形繼承的。virtual可加可不加,子類(lèi)覆蓋它的函數(shù)不加virtual,也能實(shí)現(xiàn)多態(tài)。30. 函數(shù)重載是什么意思?它與虛函數(shù)的概念有什么區(qū)別?函數(shù)重載是一個(gè)同名函數(shù)完成不同的功能,編譯系統(tǒng)在編譯階段通過(guò)函數(shù)參數(shù)個(gè)數(shù)、參數(shù)類(lèi)型不同,函數(shù)的返回值來(lái)區(qū)分該調(diào)用哪一個(gè)函數(shù),即實(shí)現(xiàn)的是靜態(tài)的多態(tài)性。但是記?。翰荒軆H僅通過(guò)函數(shù)返回值不同來(lái)實(shí)現(xiàn)函數(shù)重載。而虛函數(shù)實(shí)現(xiàn)的是在基類(lèi)過(guò)使用關(guān)鍵字virtual來(lái)申明一個(gè)函數(shù)為虛函數(shù),含義就是該函數(shù)的功能可能在將來(lái)的派生類(lèi)中定義或者在基類(lèi)的基礎(chǔ)之上進(jìn)行擴(kuò)展,系統(tǒng)只能在運(yùn)行階段才能動(dòng)態(tài)決定該調(diào)用哪一個(gè)函數(shù),所以實(shí)現(xiàn)的是動(dòng)態(tài)的多態(tài)性。它體現(xiàn)的是一個(gè)縱向的概念,也即在基類(lèi)和派生類(lèi)間實(shí)現(xiàn)。31. 構(gòu)造函數(shù)和析構(gòu)函數(shù)是否可以被重載,為什么"答:構(gòu)造函數(shù)可以被重載,析構(gòu)函數(shù)不可以被重載。因?yàn)闃?gòu)造函數(shù)可以有多個(gè)且可以帶參數(shù),而析構(gòu)函數(shù)只能有一個(gè),且不能帶參數(shù)。32. 如何定義和實(shí)現(xiàn)一個(gè)類(lèi)的成員函數(shù)為回調(diào)函數(shù)?答:所謂的回調(diào)函數(shù),就是預(yù)先在系統(tǒng)的對(duì)函數(shù)進(jìn)行注冊(cè),讓系統(tǒng)知道這個(gè)函數(shù)的存在,以后,當(dāng)*個(gè)事件發(fā)生時(shí),再調(diào)用這個(gè)函數(shù)對(duì)事件進(jìn)行響應(yīng)。定義一個(gè)類(lèi)的成員函數(shù)時(shí)在該函數(shù)前加CALLBACK即將其定義為回調(diào)函數(shù),函數(shù)的實(shí)現(xiàn)和普通成員函數(shù)沒(méi)有區(qū)別33. 虛函數(shù)是怎么實(shí)現(xiàn)的?答:簡(jiǎn)單說(shuō)來(lái)使用了虛函數(shù)表.34. 抽象類(lèi)不會(huì)產(chǎn)生實(shí)例,所以不需要有構(gòu)造函數(shù)。錯(cuò)35. 從一個(gè)模板類(lèi)可以派生新的模板類(lèi),也可以派生非模板類(lèi)。對(duì)36. main函數(shù)執(zhí)行以前,還會(huì)執(zhí)行什么代碼?答案:全局對(duì)象的構(gòu)造函數(shù)會(huì)在main函數(shù)之前執(zhí)行。37. 當(dāng)一個(gè)類(lèi)A中沒(méi)有生命任何成員變量與成員函數(shù),這時(shí)sizeof(A)的值是多少,如果不是零,請(qǐng)解釋一下編譯器為什么沒(méi)有讓它為零。(Autodesk)答案:肯定不是零。舉個(gè)反例,如果是零的話(huà),聲明一個(gè)classA[10]對(duì)象數(shù)組,而每一個(gè)對(duì)象占用的空間是零,這時(shí)就沒(méi)辦法區(qū)分A[0],A[1]…了。38. delete與delete[]區(qū)別:delete只會(huì)調(diào)用一次析構(gòu)函數(shù),而delete[]會(huì)調(diào)用每一個(gè)成員的析構(gòu)函數(shù)。199. 子類(lèi)析構(gòu)時(shí)要調(diào)用父類(lèi)的析構(gòu)函數(shù)嗎?會(huì)調(diào)用,析構(gòu)函數(shù)調(diào)用的次序是先派生類(lèi)的析構(gòu)后基類(lèi)的析構(gòu),也就是說(shuō)在基類(lèi)的的析構(gòu)調(diào)用的時(shí)候,派生類(lèi)的信息已經(jīng)全部銷(xiāo)毀了40. .繼承優(yōu)缺點(diǎn)。1、類(lèi)繼承是在編譯時(shí)刻靜態(tài)定義的,且可直接使用,2、類(lèi)繼承可以較方便地改變父類(lèi)的實(shí)現(xiàn)。缺點(diǎn):1、因?yàn)槔^承在編譯時(shí)刻就定義了,所以無(wú)法在運(yùn)行時(shí)刻改變從父類(lèi)繼承的實(shí)現(xiàn)2、父類(lèi)通常至少定義了子類(lèi)的部分行為,父類(lèi)的任何改變都可能影響子類(lèi)的行為3、如果繼承下來(lái)的實(shí)現(xiàn)不適合解決新的問(wèn)題,則父類(lèi)必須重寫(xiě)或被其他更適合的類(lèi)替換。這種依賴(lài)關(guān)系限制了靈活性并最終限制了復(fù)用性。41. 解釋堆和棧的區(qū)別。棧區(qū)(stack)—由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。堆:一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收。42. 一個(gè)類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)什么時(shí)候被調(diào)用,是否需要手工調(diào)用"答:構(gòu)造函數(shù)在創(chuàng)建類(lèi)對(duì)象的時(shí)候被自動(dòng)調(diào)用,析構(gòu)函數(shù)在類(lèi)對(duì)象生命期結(jié)束時(shí),由系統(tǒng)自動(dòng)調(diào)用。43. 何時(shí)需要預(yù)編譯:總是使用不經(jīng)常改動(dòng)的大型代碼體。程序由多個(gè)模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項(xiàng)。在這種情況下,可以將所有包含文件預(yù)編譯為一個(gè)預(yù)編譯頭。44. 多態(tài)的作用?主要是兩個(gè):1.隱藏實(shí)現(xiàn)細(xì)節(jié),使得代碼能夠模塊化;擴(kuò)展代碼模塊,實(shí)現(xiàn)代碼重用;2.接口重用:為了類(lèi)在繼承和派生的時(shí)候,保證使用家族中任一類(lèi)的實(shí)例的*一屬性時(shí)的正確調(diào)用45. 虛擬函數(shù)與普通成員函數(shù)的區(qū)別?聯(lián)函數(shù)和構(gòu)造函數(shù)能否為虛擬函數(shù)?答案:區(qū)別:虛擬函數(shù)有virtual關(guān)鍵字,有虛擬指針和虛函數(shù)表,虛擬指針就是虛擬函數(shù)的接口,而普通成員函數(shù)沒(méi)有。聯(lián)函數(shù)和構(gòu)造函數(shù)不能為虛擬函數(shù)。46. 構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序"析構(gòu)函數(shù)為什么要虛擬"答案:構(gòu)造函數(shù)的調(diào)用順序:基類(lèi)構(gòu)造函數(shù)—對(duì)象成員構(gòu)造函數(shù)—派生類(lèi)構(gòu)造函數(shù);析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)相反。析構(gòu)函數(shù)虛擬是為了防止析構(gòu)不徹底,造成存的泄漏。47. .C++中類(lèi)型為private的成員變量可以由哪些函數(shù)訪問(wèn)"只可以由本類(lèi)中的成員函數(shù)和友員函數(shù)訪問(wèn)48. 請(qǐng)說(shuō)出類(lèi)中private,protect,public三種訪問(wèn)限制類(lèi)型的區(qū)別private是私有類(lèi)型,只有本類(lèi)中的成員函數(shù)訪問(wèn);protect是保護(hù)型的,本類(lèi)和繼承類(lèi)可以訪問(wèn);public是公有類(lèi)型,任何類(lèi)都可以訪問(wèn).49. 類(lèi)中成員變量怎么進(jìn)行初始化?可以通過(guò)構(gòu)造函數(shù)的初始化列表或構(gòu)造函數(shù)的函數(shù)體實(shí)現(xiàn)。50. 在什么時(shí)候需要使用“常引用”?如果既要利用引用提高程序的效率,又要保護(hù)傳遞給函數(shù)的數(shù)據(jù)不在函數(shù)中被改變,就應(yīng)使用常引用。51. 引用與指針有什么區(qū)別?答、1)引用必須被初始化,指針不必。2)引用初始化以后不能被改變,指針可以改變所指的對(duì)象。3)不存在指向空值的引用,但是存在指向空值的指針。52. 描述實(shí)時(shí)系統(tǒng)的基本特性答、在特定時(shí)間完成特定的任務(wù),實(shí)時(shí)性與可靠性。54. 全局變量和局部變量在存中是否有區(qū)別?如果有,是什么區(qū)別?答、全局變量?jī)?chǔ)存在靜態(tài)數(shù)據(jù)區(qū),局部變量在堆棧中。55. 堆棧溢出一般是由什么原因?qū)е碌模看?、沒(méi)有回收垃圾資源56. 什么函數(shù)不能聲明為虛函數(shù)?答構(gòu)造函數(shù)(constructor)57. .IP地址的編碼分為哪倆部分?答IP地址由兩部分組成,網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)。58. .不能做switch()的參數(shù)類(lèi)型是:答、switch的參數(shù)不能為實(shí)型。59. 如何引用一個(gè)已經(jīng)定義過(guò)的全局變量?答、可以用引用頭文件的方式,也可以用e*tern關(guān)鍵字,如果用引用頭文件方式來(lái)引用*個(gè)在頭文件中聲明的全局變理,假定你將那個(gè)變寫(xiě)錯(cuò)了,則在編譯期間會(huì)報(bào)錯(cuò),如果你用e*tern方式引用時(shí),假定你犯了同樣的錯(cuò)誤,則在編譯期間不會(huì)報(bào)錯(cuò),而在連接期間報(bào)錯(cuò)60. 對(duì)于一個(gè)頻繁使用的短小函數(shù),在C語(yǔ)言中應(yīng)用什么實(shí)現(xiàn),在C++中應(yīng)用什么實(shí)現(xiàn)"答、c用宏定義,c++用inline Nm61. C++是不是類(lèi)型安全的?答案:不是。兩個(gè)不同類(lèi)型的指針之間可以強(qiáng)制轉(zhuǎn)換(用reinterpretcast)62. 當(dāng)一個(gè)類(lèi)A中沒(méi)有生命任何成員變量與成員函數(shù),這時(shí)sizeof(A)的值是多少,請(qǐng)解釋一下編譯器為什么沒(méi)有讓它為零。答案:為1。舉個(gè)反例,如果是零的話(huà),聲明一個(gè)classA[10]對(duì)象數(shù)組,而每一個(gè)對(duì)象占用的空間是零,這時(shí)就沒(méi)辦法區(qū)分A[0],A[1]…了。63. 簡(jiǎn)述數(shù)組與指針的區(qū)別?數(shù)組要么在靜態(tài)存儲(chǔ)區(qū)被創(chuàng)建(如全局?jǐn)?shù)組),要么在棧上被創(chuàng)建。指針可以隨時(shí)指向任意類(lèi)型的存塊。(1)修改容上的區(qū)別chara[]=“hello”;a[0]=‘*’;char*p=“world”;//注意p指向常量字符串p[0]=‘*’;//編譯器不能發(fā)現(xiàn)該錯(cuò)誤,運(yùn)行時(shí)錯(cuò)誤(2)用運(yùn)算符sizeof可以計(jì)算出數(shù)組的容量(字節(jié)數(shù))。sizeof(p),p為指針得到的是一個(gè)指針變量的字節(jié)數(shù),而不是p所指的存容量。64. C++函數(shù)中值的傳遞方式有三種方式:值傳遞、指針傳遞、引用傳遞65. 存的分配方式分配方式有三種,1、靜態(tài)存儲(chǔ)區(qū),是在程序編譯時(shí)就已經(jīng)分配好的,在整個(gè)運(yùn)行期間都存在,如全局變量、常量。2、棧上分配,函數(shù)的局部變量就是從這分配的,但分配的存容易有限。3、堆上分配,也稱(chēng)動(dòng)態(tài)分配,如我們用new,malloc分配存,用delete,free來(lái)釋放的存。66. e*tern“C”有什么作用?E*tern“C”是由C++提供的一個(gè)連接交換指定符號(hào),用于告訴C++這段代碼是C函數(shù)。這是因?yàn)镃++編譯后庫(kù)中函數(shù)名會(huì)變得很長(zhǎng),與C生成的不一致,造成C++不能直接調(diào)用C函數(shù),加上e*tren“c”后,C++就能直接調(diào)用C函數(shù)了。E*tern“C”主要使用正規(guī)DLL函數(shù)的引用和導(dǎo)出和在C++包含C函數(shù)或C頭文件時(shí)使用。使用時(shí)在前面加上e*tern“c”關(guān)鍵字即可。67. 用什么函數(shù)開(kāi)啟新進(jìn)程、線程。答案:線程:CreateThread/Af*BeginThread等進(jìn)程:CreateProcess等68. SendMessage和PostMessage有什么區(qū)別答案:SendMessage是阻塞的,等消息被處理后,代碼才能走到SendMessage的下一行。PostMessage是非阻塞的,不管消息是否已被處理,代碼馬上走到PostMessage的下一行。69. CMemoryState主要功能是什么答案:查看存使用情況,解決存泄露問(wèn)題。70. 26、*include<filename.h>和*include“filename.h”有什么區(qū)別?答:對(duì)于*include<filename.h>,編譯器從標(biāo)準(zhǔn)庫(kù)路徑開(kāi)始搜索filename.h對(duì)于*include“filename.h”,編譯器從用戶(hù)的工作路徑開(kāi)始搜索filename.h71. 處理器標(biāo)識(shí)*error的目的是什么?答:編譯時(shí)輸出一條錯(cuò)誤信息,并中止繼續(xù)編譯。72. *if!defined(AF*_…_HADE_H)*define(AF*_…_HADE_H)……*endif作用?防止該頭文件被重復(fù)引用。73.在定義一個(gè)宏的時(shí)候要注意什么? 定義部分的每個(gè)形參和整個(gè)表達(dá)式都必須用括號(hào)括起來(lái),以避免不可預(yù)料的錯(cuò)誤發(fā)生74. 數(shù)組在做函數(shù)實(shí)參的時(shí)候會(huì)轉(zhuǎn)變?yōu)槭裁搭?lèi)型?數(shù)組在做實(shí)參時(shí)會(huì)變成指針類(lèi)型。75. 系統(tǒng)會(huì)自動(dòng)打開(kāi)和關(guān)閉的3個(gè)標(biāo)準(zhǔn)的文件是?(1) 標(biāo)準(zhǔn)輸入----鍵盤(pán)---stdin(2) 標(biāo)準(zhǔn)輸出----顯示器---stdout(3) 標(biāo)準(zhǔn)出錯(cuò)輸出----顯示器---stderr76. .在Win32下char,int,float,double各占多少位?(1) Char 占用8位(2) Int占用32位(3) Float占用32位(4) Double占用64位77. strcpy()和memcpy()的區(qū)別? strcpy()和memcpy()都可以用來(lái)拷貝字符串,strcpy()拷貝以’\0’結(jié)束,但memcpy()必須指定拷貝的長(zhǎng)度。78. 說(shuō)明define和const在語(yǔ)法和含義上有什么不同?(1) *define是C語(yǔ)法中定義符號(hào)變量的方法,符號(hào)常量只是用來(lái)表達(dá)一個(gè)值,在編譯階段符號(hào)就被值替換了,它沒(méi)有類(lèi)型;(2) Const是C++語(yǔ)法中定義常變量的方法,常變量具有變量特性,它具有類(lèi)型,存中存在以它命名的存儲(chǔ)單元,可以用sizeof測(cè)出長(zhǎng)度。79. 說(shuō)出字符常量和字符串常量的區(qū)別,并使用運(yùn)算符sizeof計(jì)算有什么不用?字符常量是指單個(gè)字符,字符串常量以‘\0’結(jié)束,使用運(yùn)算符sizeof計(jì)算多占一字節(jié)的存儲(chǔ)空間。80. 簡(jiǎn)述全局變量的優(yōu)缺點(diǎn)?全局變量也稱(chēng)為外部變量,它是在函數(shù)外部定義的變量,它屬于一個(gè)源程序文件,它保存上一次被修改后的值,便于數(shù)據(jù)共享,但不方便管理,易引起意想不到的錯(cuò)誤。81. 總結(jié)static的應(yīng)用和作用?(1)函數(shù)體static變量的作用圍為該函數(shù)體,不同于auto變量,該變量的存只被分配一次,因此其值在下次調(diào)用時(shí)仍維持上次的值;(2)在模塊的static全局變量可以被模塊所用函數(shù)訪問(wèn),但不能被模塊外其它函數(shù)訪問(wèn);(3)在模塊的static函數(shù)只可被這一模塊的其它函數(shù)調(diào)用,這個(gè)函數(shù)的使用圍被限制在聲明它的模塊;(4)在類(lèi)中的static成員變量屬于整個(gè)類(lèi)所擁有,對(duì)類(lèi)的所有對(duì)象只有一份拷貝;(5)在類(lèi)中的static成員函數(shù)屬于整個(gè)類(lèi)所擁有,這個(gè)函數(shù)不接收this指針,因而只能訪問(wèn)類(lèi)的static成員變量。82. .總結(jié)const的應(yīng)用和作用?(1)欲阻止一個(gè)變量被改變,可以使用const關(guān)鍵字。在定義該const變量時(shí),通常需要對(duì)它進(jìn)行初始化,因?yàn)橐院缶蜎](méi)有機(jī)會(huì)再去改變它了;(2)對(duì)指針來(lái)說(shuō),可以指定指針本身為const,也可以指定指針?biāo)傅臄?shù)據(jù)為const,或二者同時(shí)指定為const;(3)在一個(gè)函數(shù)聲明中,const可以修飾形參,表明它是一個(gè)輸入?yún)?shù),在函數(shù)部不能改變其值;(4)對(duì)于類(lèi)的成員函數(shù),若指定其為const類(lèi)型,則表明其是一個(gè)常函數(shù),不能修改類(lèi)的成員變量;(5)對(duì)于類(lèi)的成員函數(shù),有時(shí)候必須指定其返回值為const類(lèi)型,以使得其返回值不為“左值”。83. 什么是指針?談?wù)勀銓?duì)指針的理解?指針是一個(gè)變量,該變量專(zhuān)門(mén)存放存地址;指針變量的類(lèi)型取決于其指向的數(shù)據(jù)類(lèi)型,在所指數(shù)據(jù)類(lèi)型前加*指針變量的特點(diǎn)是它可以訪問(wèn)所指向的存。84. 什么是常指針,什么是指向常變量的指針?常指針的含義是該指針?biāo)赶虻牡刂凡荒茏?,但該地址所指向的容可以變化,使用常指針可以保證我們的指針不能指向其它的變量,指向常變量的指針是指該指針的變量本身的地址可以變化,可以指向其它的變量,但是它所指的容不可以被修改。指向長(zhǎng)變量的指針定義,85. 函數(shù)指針和指針函數(shù)的區(qū)別?函數(shù)指針是指指向一個(gè)函數(shù)入口的指針;指針函數(shù)是指函數(shù)的返回值是一個(gè)指針類(lèi)型。87. 簡(jiǎn)述Debug版本和Release版本的區(qū)別?Debug版本是調(diào)試版本,Release版本是發(fā)布給用戶(hù)的最終非調(diào)試的版本,88. 指針的幾種典型應(yīng)用情況?int*p[n];-----指針數(shù)組,每個(gè)元素均為指向整型數(shù)據(jù)的指針。int(*)p[n];------p為指向一維數(shù)組的指針,這個(gè)一維數(shù)組有n個(gè)整型數(shù)據(jù)。int*p();----------函數(shù)帶回指針,指針指向返回的值。int(*)p();------p為指向函數(shù)的指針。89. static函數(shù)與普通函數(shù)有什么區(qū)別"static函數(shù)在存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝90. struct(結(jié)構(gòu))和union(聯(lián)合)的區(qū)別?1.結(jié)構(gòu)和聯(lián)合都是由多個(gè)不同的數(shù)據(jù)類(lèi)型成員組成,但在任何同一時(shí)刻,聯(lián)合中只存放了一個(gè)被選中的成員(所有成員共用一塊地址空間),而結(jié)構(gòu)的所有成員都存在(不同成員的存放地址不同)。2.對(duì)于聯(lián)合的不同成員賦值,將會(huì)對(duì)其它成員重寫(xiě),原來(lái)成員的值就不存在了,而對(duì)于結(jié)構(gòu)的不同成員賦值是互不影響的。91. class和struct的區(qū)別?struct的成員默認(rèn)是公有的,而類(lèi)的成員默認(rèn)是私有的。92. 簡(jiǎn)述枚舉類(lèi)型?枚舉方便一次定義一組常量,使用起來(lái)很方便;93. assert()的作用?ASSERT()是一個(gè)調(diào)試程序時(shí)經(jīng)常使用的宏,在程序運(yùn)行時(shí)它計(jì)算括號(hào)的表達(dá)式,如果表達(dá)式為FALSE(0),程序?qū)?bào)告錯(cuò)誤,并終止執(zhí)行。如果表達(dá)式不為0,則繼續(xù)執(zhí)行后面的語(yǔ)句。這個(gè)宏通常原來(lái)判斷程序中是否出現(xiàn)了明顯非法的數(shù)據(jù),如果出現(xiàn)了終止程序以免導(dǎo)致嚴(yán)重后果,同時(shí)也便于查找錯(cuò)誤。94. 局部變量和全局變量是否可以同名?能,局部會(huì)屏蔽全局。要用全局變量,需要使用"::"(域運(yùn)算符)。95. 程序的局部變量存在于(堆棧)中,全局變量存在于(靜態(tài)區(qū))中,動(dòng)態(tài)申請(qǐng)數(shù)據(jù)存在于(堆)中。96. 在什么時(shí)候使用常引用?如果既要利用引用提高程序的效率,又要保護(hù)傳遞給函數(shù)的數(shù)據(jù)不在函數(shù)中被改變,就應(yīng)使用常引用。97. 類(lèi)的聲明和實(shí)現(xiàn)的分開(kāi)的好處?1. 起保護(hù)作用;2. 提高編譯的效率。98. windows消息系統(tǒng)由哪幾部分構(gòu)成?由一下3部分組成:1. 消息隊(duì)列:操作系統(tǒng)負(fù)責(zé)為進(jìn)程維護(hù)一個(gè)消息隊(duì)列,程序運(yùn)行時(shí)不斷從該消息隊(duì)列中獲取消息、處理消息;2. 消息循環(huán):應(yīng)用程序通過(guò)消息循環(huán)不斷獲取消息、處理消息。3. 消息處理:消息循環(huán)負(fù)責(zé)將消息派發(fā)到相關(guān)的窗口上使用關(guān)聯(lián)的窗口過(guò)程函數(shù)進(jìn)行處理。99. 什么是消息映射?消息映射就是讓程序員指定MFC類(lèi)(有消息處理能力的類(lèi))處理*個(gè)消息。然后由程序員完成對(duì)該處理函數(shù)的編寫(xiě),以實(shí)現(xiàn)消息處理功能。100. 什么是UDP和TCP的區(qū)別是什么?TCP的全稱(chēng)為傳輸控制協(xié)議。這種協(xié)議可以提供面向連接的、可靠的、點(diǎn)到點(diǎn)的通信。UDP全稱(chēng)為用戶(hù)報(bào)文協(xié)議,它可以提供非連接的不可靠的點(diǎn)到多點(diǎn)的通信。用TCP還是UDP,那要看你的程序注重哪一個(gè)方面?可靠還是快速?101. winsock建立連接的主要實(shí)現(xiàn)步驟"答:服務(wù)器端:socket()建立套接字,綁定(bind)并監(jiān)聽(tīng)(listen),用accept()等待客戶(hù)端連接,accept()發(fā)現(xiàn)有客戶(hù)端連接,建立一個(gè)新的套接字,自身重新開(kāi)始等待連接。該新產(chǎn)生的套接字使用send()和recv()寫(xiě)讀數(shù)據(jù),直至數(shù)據(jù)交換完畢,closesocket()關(guān)閉套接字??蛻?hù)端:socket()建立套接字,連接(connect)服務(wù)器,連接上后使用send()和recv(),在套接字上寫(xiě)讀數(shù)據(jù),直至數(shù)據(jù)交換完畢,closesocket()關(guān)閉套接字。102. 進(jìn)程間主要的通訊方式?信號(hào)量,管道,消息,共享存103. 構(gòu)成Win32API函數(shù)的三個(gè)動(dòng)態(tài)庫(kù)是什么?答:核庫(kù),用戶(hù)界面管理庫(kù),圖形設(shè)備界面庫(kù)。104. 創(chuàng)建一個(gè)窗口的步驟是?答:填充一個(gè)窗口類(lèi)結(jié)構(gòu)->注冊(cè)這個(gè)窗口類(lèi)->然后再創(chuàng)建窗口->顯示窗口->更新窗口。105. 模態(tài)對(duì)話(huà)框和非模態(tài)對(duì)話(huà)框有什么區(qū)別?答:1.調(diào)用規(guī)則不同:前者是用DoModal()調(diào)用,后者通過(guò)屬性和ShowWindow()來(lái)顯示。2.模態(tài)對(duì)話(huà)框在沒(méi)有關(guān)閉前用戶(hù)不能進(jìn)行其他操作,而非模態(tài)對(duì)話(huà)框可以。3.非模態(tài)對(duì)話(huà)框創(chuàng)建時(shí)必須編寫(xiě)自己的共有構(gòu)造函數(shù),還要調(diào)用Create()函數(shù)。106. 從EDIT框中取出數(shù)據(jù)給關(guān)聯(lián)的變量,已經(jīng)把關(guān)聯(lián)的變量的數(shù)據(jù)顯示在EDIT框上的函數(shù)是什么?答:UpdateData(TRUE),Updatedata(FALSE).107. 簡(jiǎn)單介紹GDI?答;GDI是GraphicsDeviceInterface的縮寫(xiě),譯為:圖形設(shè)備接口;是一個(gè)在Windows應(yīng)用程序中執(zhí)行與設(shè)備無(wú)關(guān)的函數(shù)庫(kù),這些函數(shù)在不同的輸出設(shè)備上產(chǎn)生圖形以及文字輸出。108. windows消息分為幾類(lèi)?并對(duì)各類(lèi)做簡(jiǎn)單描述。1.窗口消息:與窗口相關(guān)的消息,除WM_MAND之外的所有以WM_開(kāi)頭的消息;2.命令消息;用于處理用戶(hù)請(qǐng)求,以WM_MAND表示的消息;3.控件通知消息:統(tǒng)一由WM_NOTIFT表示,4.用戶(hù)自定義消息。109. 如何自定義消息?使用WM_USER和WM_APP兩個(gè)宏來(lái)自定義消息,110. 簡(jiǎn)述VisualC++、Win32API和MFC之間的關(guān)系?(1) VisualC+是一個(gè)以C++程序設(shè)計(jì)語(yǔ)言為基礎(chǔ)的、集成的、可視化的編程環(huán)境;(2) Win32API是32位Windows操作系以C/C++形式提供的一組應(yīng)用程序接口;(3) MFC是對(duì)Win32API的封裝,簡(jiǎn)化了開(kāi)發(fā)過(guò)程。111.怎樣消除多重繼承中的二義性?1.成員限定符2.虛基類(lèi)112什么叫靜態(tài)關(guān)聯(lián),什么叫動(dòng)態(tài)關(guān)聯(lián)在多態(tài)中,如果程序在編譯階段就能確定實(shí)際執(zhí)行動(dòng)作,則稱(chēng)靜態(tài)關(guān)聯(lián),如果等到程序運(yùn)行才能確定叫動(dòng)態(tài)關(guān)聯(lián)。113多態(tài)的兩個(gè)必要條件1.一個(gè)基類(lèi)的指針或引用指向一個(gè)派生類(lèi)對(duì)象,2.虛函數(shù)114.什么叫智能指針?當(dāng)一個(gè)類(lèi)中,存在一個(gè)指向另一個(gè)類(lèi)對(duì)象的指針時(shí),對(duì)指針運(yùn)算符進(jìn)行重載,則當(dāng)前類(lèi)對(duì)象可以通過(guò)指針像調(diào)用自身成員一樣調(diào)用另一個(gè)類(lèi)的成員。115.什么時(shí)候需要用虛析構(gòu)函數(shù)?當(dāng)基類(lèi)指針指向用new運(yùn)算符生成的派生類(lèi)對(duì)象時(shí),delete基類(lèi)指針時(shí),派生類(lèi)部分沒(méi)有釋放掉而造成釋放不徹底現(xiàn)象,需要虛析構(gòu)函數(shù)。116.MFC中,大部分類(lèi)是從哪個(gè)類(lèi)繼承而來(lái)" CObject117.什么是平衡二叉樹(shù)?答:左右子樹(shù)都是平衡二叉樹(shù),而且左右子樹(shù)的深度差值的約對(duì)值不大于1118.語(yǔ)句for(;1;)有什么問(wèn)題?它是什么意思?答:無(wú)限循環(huán),和while(1)相同。119.派生新類(lèi)的過(guò)程要經(jīng)歷三個(gè)步驟1吸收基類(lèi)成員2.改造基類(lèi)成員3.添加新成員121.TCP/IP建立連接的過(guò)程在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。第一次握手:建立連接時(shí),客戶(hù)端發(fā)送連接請(qǐng)求到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);第二次握手:服務(wù)器收到客戶(hù)端連接請(qǐng)求,向客戶(hù)端發(fā)送允許連接應(yīng)答,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);第三次握手:客戶(hù)端收到服務(wù)器的允許連接應(yīng)答,向服務(wù)器發(fā)送確認(rèn),客戶(hù)端和服務(wù)器進(jìn)入通信狀態(tài),完成三次握手122..memset,memcpy的區(qū)別memset用來(lái)對(duì)一段存空間全部設(shè)置為*個(gè)字符,一般用在對(duì)定義的字符串進(jìn)行初始化為'\0'。memcpy用來(lái)做存拷貝,你可以拿它拷貝任何數(shù)據(jù)類(lèi)型的對(duì)象,可以指定拷貝的數(shù)據(jù)長(zhǎng)度;123.在C++程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加e*tern“C”? 答:C++語(yǔ)言支持函數(shù)重載,C語(yǔ)言不支持函數(shù)重載。函數(shù)被C++編譯后在庫(kù)中的名字與C語(yǔ)言的不同。假設(shè)*個(gè)函數(shù)的原型為:voidfoo(int*,inty);該函數(shù)被C編譯器編譯后在庫(kù)中的名字為_(kāi)foo,而C++編譯器則會(huì)產(chǎn)生像_foo_int_int之類(lèi)的名字。C++提供了C連接交換指定符號(hào)e*tern“C”來(lái)解決名字匹配問(wèn)題。124怎樣定義一個(gè)純虛函數(shù)?含有純虛函數(shù)的類(lèi)稱(chēng)為什么?在虛函數(shù)的后面加=0,含有虛函數(shù)的類(lèi)稱(chēng)為抽象類(lèi)。127.類(lèi)成員函數(shù)的重載、覆蓋和隱藏區(qū)別答案:成員函數(shù)被重載的特征:(1)相同的圍(在同一個(gè)類(lèi)中);(2)函數(shù)名字相同;(3)參數(shù)不同;(4)virtual關(guān)鍵字可有可無(wú)。覆蓋是指派生類(lèi)函數(shù)覆蓋基類(lèi)函數(shù),特征是:(1)不同的圍(分別位于派生類(lèi)與基類(lèi));(2)函數(shù)名字相同;(3)參數(shù)相同;(4)基類(lèi)函數(shù)必須有virtual關(guān)鍵字?!半[藏”是指派生類(lèi)的函數(shù)屏蔽了與其同名的基類(lèi)函數(shù),規(guī)則如下:(1)如果派生類(lèi)的函數(shù)與基類(lèi)的函數(shù)同名,但是參數(shù)不同。此時(shí),不論有無(wú)virtual關(guān)鍵字,基類(lèi)的函數(shù)將被隱藏(注意別與重載混淆)。(2)如果派生類(lèi)的函數(shù)與基類(lèi)的函數(shù)同名,并且參數(shù)也相同,但是基類(lèi)函數(shù)沒(méi)有virtual關(guān)鍵字。此時(shí),基類(lèi)的函數(shù)被隱藏(注意別與覆蓋混淆)128.如何打印出當(dāng)前源文件的文件名以及源文件的當(dāng)前行號(hào)?答案:cout<<__FILE__;cout<<__LINE__;__FILE__和__LINE__是系統(tǒng)預(yù)定義宏,這種宏并不是在*個(gè)文件中定義的,而是由編譯器定義的。133將“引用”作為函數(shù)參數(shù)有哪些特點(diǎn)?(1)傳遞引用給函數(shù)與傳遞指針的效果是一樣的。這時(shí),被調(diào)函數(shù)的形參就成為原來(lái)主調(diào)函數(shù)中的實(shí)參變量或?qū)ο蟮囊粋€(gè)別名來(lái)使用,所以在被調(diào)函數(shù)中對(duì)形參變量的操作就是對(duì)其相應(yīng)的目標(biāo)對(duì)象(在主調(diào)函數(shù)中)的操作。(2)使用引用傳遞函數(shù)的參數(shù),在存中并沒(méi)有產(chǎn)生實(shí)參的副本,它是直接對(duì)實(shí)參操作;而使用一般變量傳遞函數(shù)的參數(shù),當(dāng)發(fā)生函數(shù)調(diào)用時(shí),需要給形參分配存儲(chǔ)單元,形參變量是實(shí)參變量的副本;如果傳遞的是對(duì)象,還將調(diào)用拷貝構(gòu)造函數(shù)。因此,當(dāng)參數(shù)傳遞的數(shù)據(jù)較大時(shí),用引用比用一般變量傳遞參數(shù)的效率和所占空間都好。(3)使用指針作為函數(shù)的參數(shù)雖然也能達(dá)到與使用引用的效果,但是,在被調(diào)函數(shù)中同樣要給形參分配存儲(chǔ)單元,且需要重復(fù)使用"*指針變量名"的形式進(jìn)行運(yùn)算,這很容易產(chǎn)生錯(cuò)誤且程序的閱讀性較差;另一方面,在主調(diào)函數(shù)的調(diào)用點(diǎn)處,必須用變量的地址作為實(shí)參。而引用更容易使用,更清晰。134.什么時(shí)候需要“引用”?流操作符(<<、>>)和賦值操作符(=)的返回值、拷貝構(gòu)造函數(shù)的參數(shù)、賦值操作符的參數(shù)、其它情況都推薦使用引用。135.面向?qū)ο蟮娜齻€(gè)基本特征,并簡(jiǎn)單敘述之?1.封裝:將客觀事物抽象成類(lèi),每個(gè)類(lèi)對(duì)自身的數(shù)據(jù)和方法實(shí)行protection(private,protected,public)2.繼承:廣義的繼承有三種實(shí)現(xiàn)形式:實(shí)現(xiàn)繼承(指使用基類(lèi)的屬性和方法而無(wú)需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實(shí)現(xiàn)代碼)、接口繼承(僅使用屬性和方法,實(shí)現(xiàn)滯后到子類(lèi)實(shí)現(xiàn))。前兩種(類(lèi)繼承)和后一種(對(duì)象組合=>接口繼承以及純虛函數(shù))構(gòu)成了功能復(fù)用的兩種方式。3.多態(tài):是將父對(duì)象設(shè)置成為和一個(gè)或更多的他的子對(duì)象相等的技術(shù),賦值之后,父對(duì)象就可以根據(jù)當(dāng)前賦值給它的子對(duì)象的特性以不同的方式運(yùn)作。簡(jiǎn)單的說(shuō),就是一句話(huà):允許將子類(lèi)類(lèi)型的指針賦值給父類(lèi)類(lèi)型的指針。140.一個(gè)單向鏈表,不知道頭節(jié)點(diǎn),一個(gè)指針指向其中的一個(gè)節(jié)點(diǎn),問(wèn)如何刪除這個(gè)指針指向的節(jié)點(diǎn)?將這個(gè)指針指向的ne*t節(jié)點(diǎn)值copy到本節(jié)點(diǎn),將ne*t指向ne*t->ne*t,并隨后刪除原ne*t指向的節(jié)點(diǎn)。157、strcat能把strSrc的容連接到strDest,為什么還要char*類(lèi)型的返回值?答:方便賦值給其他變量158、MFC中CString是類(lèi)型安全類(lèi)么?答:不是,其它數(shù)據(jù)類(lèi)型轉(zhuǎn)換到CString可以使用CString的成員函數(shù)Format來(lái)轉(zhuǎn)換159.C++中什么數(shù)據(jù)分配在?;蚨阎??答:棧:存放局部變量,函數(shù)調(diào)用參數(shù),函數(shù)返回值,函數(shù)返回地址。由系統(tǒng)管理堆:程序運(yùn)行時(shí)動(dòng)態(tài)申請(qǐng),new和malloc申請(qǐng)的存就在堆上160、函數(shù)模板與類(lèi)模板有什么區(qū)別?答:函數(shù)模板的實(shí)例化是由編譯程序在處理函數(shù)調(diào)用時(shí)自動(dòng)完成的,而類(lèi)模板的實(shí)例化必須由程序員在程序中顯式地指定。161、inti=10,j=10,k=3;k*=i+j;k最后的值是?答:60,此題考察優(yōu)先級(jí),實(shí)際寫(xiě)成:k*=(i+j);,賦值運(yùn)算符優(yōu)先級(jí)最低162、do……while和while……do有什么區(qū)別?答、前一個(gè)循環(huán)一遍再判斷,后一個(gè)判斷以后再循環(huán)187頭文件的作用是什么"答:一、通過(guò)頭文件來(lái)調(diào)用庫(kù)功能。在很多場(chǎng)合,源代碼不便(或不準(zhǔn))向用戶(hù)公布,只要向用戶(hù)提供頭文件和二進(jìn)制的庫(kù)即可。用戶(hù)只需要按照頭文件中的接口聲明來(lái)調(diào)用庫(kù)功能,而不必關(guān)心接口怎么實(shí)現(xiàn)的。編譯器會(huì)從庫(kù)中提取相應(yīng)的代碼。二、頭文件能加強(qiáng)類(lèi)型安全檢查。如果*個(gè)接口被實(shí)現(xiàn)或被使用時(shí),其方式與頭文件中的聲明不一致,編譯器就會(huì)指出錯(cuò)誤,這一簡(jiǎn)單的規(guī)則能大大減輕程序員調(diào)試、改錯(cuò)的負(fù)擔(dān)。206.C和C++有什么不同"從機(jī)制上:c是面向過(guò)程的(但c也可以編寫(xiě)面向?qū)ο蟮某绦颍籧++是面向?qū)ο蟮?,提供了?lèi)。但是,c++編寫(xiě)面向?qū)ο蟮某绦虮萩容易從適用的方向:c適合要求代碼體積小的,效率高的場(chǎng)合,如嵌入式;c++適合更上層的,復(fù)雜的;llinu*核心大部分是c寫(xiě)的,因?yàn)樗窍到y(tǒng)軟件,效率要求極高。從名稱(chēng)上也可以看出,c++比c多了+,說(shuō)明c++是c的超集;那為什么不叫c+而叫c++呢,是因?yàn)閏++比c來(lái)說(shuō)擴(kuò)充的東西太多了,所以就在c后面放上兩個(gè)+;于是就成了c++C語(yǔ)言是結(jié)構(gòu)化編程語(yǔ)言,C++是面向?qū)ο缶幊陶Z(yǔ)言。LUPA開(kāi)源社區(qū)}n*r2C/M8fC++側(cè)重于對(duì)象而不是過(guò)程,側(cè)重于類(lèi)的設(shè)計(jì)而不是邏輯的設(shè)計(jì)。298.動(dòng)態(tài)連接庫(kù)的兩種方式"答:調(diào)用一個(gè)DLL中的函數(shù)有兩種方法:1.載入時(shí)動(dòng)態(tài)(load-timedynamiclinking),模塊非常明確調(diào)用*個(gè)導(dǎo)出函數(shù),使得他們就像本地函數(shù)一樣。這需要時(shí)那些函數(shù)所在DLL的導(dǎo)入庫(kù),導(dǎo)入庫(kù)向系統(tǒng)提供了載入DLL時(shí)所需的信息及DLL函數(shù)定位。2.運(yùn)行時(shí)動(dòng)態(tài)(run-timedynamiclinking),運(yùn)行時(shí)可以通過(guò)LoadLibrary或LoadLibraryE*函數(shù)載入DLL。DLL載入后,模塊可以通過(guò)調(diào)用GetProcAddress獲取DLL函數(shù)的出口地址,然后就可以通過(guò)返回的函數(shù)指針調(diào)用DLL函數(shù)了。如此即可避免導(dǎo)入庫(kù)文件了。38.“引用”與多態(tài)的關(guān)系?引用是除指針外另一個(gè)可以產(chǎn)生多態(tài)效果的手段。這意味著,一個(gè)基類(lèi)的引用可以指向它的派生類(lèi)實(shí)例。四、棧的表示和實(shí)現(xiàn)1.順序棧順序棧是用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)的棧,即利用一組地址連續(xù)的存儲(chǔ)單元依次存放自棧底到棧頂?shù)臄?shù)據(jù)元素,同時(shí)由于棧的操作的特殊性,還必須附設(shè)一個(gè)位置指針top(棧頂指針)來(lái)動(dòng)態(tài)地指示棧頂元素在順序棧中的位置。通常以top=0或top=-1表示空棧。順序棧的存儲(chǔ)結(jié)構(gòu)可以用C語(yǔ)言中的一維數(shù)組來(lái)表示。棧的順序存儲(chǔ)結(jié)構(gòu)定義如下:*defineSTACK_INIT_SIZE100//存儲(chǔ)空間初始分配量*defineSTACKINCREMENT10//存儲(chǔ)空間分配增量typedefstruct{SElemType*base;//在棧構(gòu)造前和銷(xiāo)毀后base值為NULLSElemType*top;//棧頂指針intstacksize;}SqStack;//當(dāng)前已分配存儲(chǔ)空間或簡(jiǎn)單定義如下:*defineM100ints[M];inttop;初態(tài):top=0;空棧,棧中無(wú)元素,進(jìn)棧:s[top]=*;top=top+1;退棧:top=top-1;取s[top];棧滿(mǎn):top=M;棧溢出(上益),不能再進(jìn)棧(錯(cuò)誤狀態(tài))top=0時(shí)不能退棧,下益(正常狀態(tài),常作控制條件)2.順序棧基本操作的實(shí)現(xiàn)如下:(1)構(gòu)造空順序棧算法:初始化棧StatusInitStack(SqStack&S){//構(gòu)造一個(gè)空棧SS.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base)e*it(OVERFLOW);//為棧分配存儲(chǔ)空間失敗S.top=S.base;//令棧頂指針=棧底指針S.stacksize=STACK_INIT_SIZE;//設(shè)置棧的當(dāng)前可使用的最大容量returnOK;}//InitStack程序描述://Thisprogramistoinitializeastack*include<malloc.h>*include<iostream.h>*include<conio.h>*defineSTACK_INIT_SIZE100*defineSTACKINCREMENT10*defineOK1*defineERROR0typedefintSElemType;typedefstruct//definestructureSqStack(){SElemType*base;SE
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)業(yè)產(chǎn)業(yè)工人勞務(wù)合作合同示范
- 鄂爾多斯2024年內(nèi)蒙古鄂爾多斯市杭錦旗烏蘭牧騎引進(jìn)3名專(zhuān)業(yè)技術(shù)人員筆試歷年參考題庫(kù)附帶答案詳解
- 英德市四年級(jí)上學(xué)期11月期中語(yǔ)文試題(含解析)
- 玉溪云南玉溪市司法局招聘編外人員筆試歷年參考題庫(kù)附帶答案詳解
- 煙臺(tái)2025年山東煙臺(tái)黃渤海新區(qū)教育體育局招聘高層次人才177人筆試歷年參考題庫(kù)附帶答案詳解
- 楚雄云南楚雄元謀縣消防救援局招聘9人筆試歷年參考題庫(kù)附帶答案詳解
- 杭州2025年上半年浙江杭州市衛(wèi)生健康委員會(huì)所屬九家事業(yè)單位招聘74人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年中國(guó)學(xué)校課桌椅市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)化工用電磁閥市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國(guó)黃桿皮頭鉛筆行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 商業(yè)銀行的風(fēng)險(xiǎn)審計(jì)與內(nèi)部控制
- 2024項(xiàng)目管理人員安全培訓(xùn)考試題及參考答案AB卷
- 2025年與商場(chǎng)合作協(xié)議樣本(5篇)
- 2024年12月青少年機(jī)器人技術(shù)等級(jí)考試?yán)碚摼C合試卷(真題及答案)
- 網(wǎng)絡(luò)與社交媒體管理制度
- 2025年安徽碳鑫科技有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年寒假實(shí)踐特色作業(yè)設(shè)計(jì)模板
- 2024年福建漳州人才發(fā)展集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- JTGT F20-2015 公路路面基層施工技術(shù)細(xì)則
- 馬曉宏_《法語(yǔ)》_第一冊(cè)復(fù)習(xí)(課堂PPT)
- 道路環(huán)衛(wèi)清掃保潔項(xiàng)目應(yīng)急處置預(yù)案
評(píng)論
0/150
提交評(píng)論