




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1. 面向?qū)ο蟮某绦蛟O(shè)計(jì)思想是什么?答:把數(shù)據(jù)結(jié)構(gòu)和對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的方法封裝形成一個(gè)個(gè)的對(duì)象。 2. 什么是類?答:把一些具有共性的對(duì)象歸類后形成一個(gè)集合,也就是所謂的類。 3. 對(duì)象都具有的兩方面特征是什么?分別是什么含義?答:對(duì)象都具有的特征是:靜態(tài)特征和動(dòng)態(tài)特征。靜態(tài)特征是指能描述對(duì)象的一些屬性(成員變量),動(dòng)態(tài)特征是指對(duì)象表現(xiàn)出來的行為(成員函數(shù)) 4. 在頭文件中進(jìn)行類的聲明,在對(duì)應(yīng)的實(shí)現(xiàn)文件中進(jìn)行類的定義有什么意義?答:這樣可以提高編譯效率,
2、因?yàn)榉珠_的話只需要編譯一次生成對(duì)應(yīng)的.obj文件后,再次應(yīng)用該類的地方,這個(gè)類就不會(huì)被再次編譯,從而大大的提高了編譯效率。 5. 在類的內(nèi)部定義成員函數(shù)的函數(shù)體,這種函數(shù)會(huì)具備那種屬性?答:這種函數(shù)會(huì)自動(dòng)為內(nèi)聯(lián)函數(shù),這種函數(shù)在函數(shù)調(diào)用的地方在編譯階段都會(huì)進(jìn)行代碼替換。 6. 成員函數(shù)通過什么來區(qū)分不同對(duì)象的成員數(shù)據(jù)?為什么它能夠區(qū)分?答:通過this指針指向?qū)ο蟮氖椎刂穪韰^(qū)分的。 7. C+編譯器自動(dòng)為類產(chǎn)生的四個(gè)缺省函數(shù)是什么?答:默認(rèn)構(gòu)造函數(shù),拷貝構(gòu)造函
3、數(shù),析構(gòu)函數(shù),賦值函數(shù)。 8. 拷貝構(gòu)造函數(shù)在哪幾種情況下會(huì)被調(diào)用?答:1.當(dāng)類的一個(gè)對(duì)象去初始化該類的另一個(gè)對(duì)象時(shí);2.如果函數(shù)的形參是類的對(duì)象,調(diào)用函數(shù)進(jìn)行形參和實(shí)參結(jié)合時(shí);3.如果函數(shù)的返回值是類對(duì)象,函數(shù)調(diào)用完成返回時(shí)。 9. 構(gòu)造函數(shù)與普通函數(shù)相比在形式上有什么不同?(構(gòu)造函數(shù)的作用,它的聲明形式來分析)答:構(gòu)造函數(shù)是類的一種特殊成員函數(shù),一般情況下,它是專門用來初始化對(duì)象成員變量的。構(gòu)造函數(shù)的名字必須與類名相同,它不具有任何類型,不返回任何值。 10. 什么時(shí)候必須重寫
4、拷貝構(gòu)造函數(shù)?答:當(dāng)構(gòu)造函數(shù)涉及到動(dòng)態(tài)存儲(chǔ)分配空間時(shí),要自己寫拷貝構(gòu)造函數(shù),并且要深拷貝。 11. 構(gòu)造函數(shù)的調(diào)用順序是什么?答:1.先調(diào)用基類構(gòu)造函數(shù)2.按聲明順序初始化數(shù)據(jù)成員3.最后調(diào)用自己的構(gòu)造函數(shù)。 12. 哪幾種情況必須用到初始化成員列表?答:類的成員是常量成員初始化;類的成員是對(duì)象成員初始化,而該對(duì)象沒有無參構(gòu)造函數(shù)。類的成員為引用時(shí)。 13. 什么是常對(duì)象?答:常對(duì)象是指在任何場(chǎng)合都不能對(duì)其成員的值進(jìn)行修改的對(duì)象。 14. 靜態(tài)函數(shù)存在的意義?答:靜態(tài)私有成員在類外不能被訪問,可通過類的靜態(tài)
5、成員函數(shù)來訪問;當(dāng)類的構(gòu)造函數(shù)是私有的時(shí),不像普通類那樣實(shí)例化自己,只能通過靜態(tài)成員函數(shù)來調(diào)用構(gòu)造函數(shù)。 15. 在類外有什么辦法可以訪問類的非公有成員?答:友元,繼承,公有成員函數(shù)。 16. 什么叫抽象類?答:不用來定義對(duì)象而只作為一種基本類型用作繼承的類。 17. 運(yùn)算符重載的意義?答:為了對(duì)用戶自定義數(shù)據(jù)類型的數(shù)據(jù)的操作與內(nèi)定義的數(shù)據(jù)類型的數(shù)據(jù)的操作形式一致。 18. 不允許重載的5個(gè)運(yùn)算符是哪些?答:1. .*(成員指針訪問運(yùn)算符號(hào))2. &
6、#160; :域運(yùn)算符3. Sizeof 長(zhǎng)度運(yùn)算符號(hào)4. ?:條件運(yùn)算符號(hào)5. .(成員訪問符) 19. 運(yùn)算符重載的三種方式?答:普通函數(shù),友元函數(shù),類成員函數(shù)。 20. 流運(yùn)算符為什么不能通過類的成員函數(shù)重載?一般怎么解決?答:因?yàn)橥ㄟ^類的成員函數(shù)重載必須是運(yùn)算符的第一個(gè)是自己,而對(duì)流運(yùn)算的重載要求第一個(gè)參數(shù)是流對(duì)象。所以一般通過友元來解決。 21. 賦值運(yùn)算符和拷貝構(gòu)造函數(shù)的區(qū)別與聯(lián)系?答:相同點(diǎn):都是將一個(gè)對(duì)象copy到另一個(gè)中去。不同
7、點(diǎn):拷貝構(gòu)造函數(shù)涉及到要新建立一個(gè)對(duì)象。 22. 在哪種情況下要調(diào)用該類的析構(gòu)函數(shù)?答:對(duì)象生命周期結(jié)束時(shí)。 23. 對(duì)象間是怎樣實(shí)現(xiàn)數(shù)據(jù)的共享的?答:通過類的靜態(tài)成員變量來實(shí)現(xiàn)對(duì)象間的數(shù)據(jù)共享。靜態(tài)成員變量占有自己獨(dú)立的空間不為某個(gè)對(duì)象所私有。 24. 友元關(guān)系有什么特性?答:?jiǎn)蜗虻模莻鬟f的,不能繼承的。 25. 對(duì)對(duì)象成員進(jìn)行初始化的次序是什么?答:它的次序完全不受它們?cè)诔跏蓟碇写涡虻挠绊懀挥谐蓡T對(duì)象在類中聲明的次序來決定的。 26. 類和對(duì)象之間的關(guān)系是什么?答:類是對(duì)象的
8、抽象,對(duì)象是類的實(shí)例。 27. 對(duì)類的成員的訪問屬性有什么?答:public,protected,private。 28const char *p和char * const p; 的區(qū)別答:如果const位于星號(hào)的左側(cè),則const就是用來修飾指針?biāo)赶虻淖兞浚粗羔樦赶驗(yàn)槌A浚蝗绻鹀onst位于星號(hào)的右側(cè),const就是修飾指針本身,即指針本身是常量。 29. 是不是一個(gè)父類寫了一個(gè)virtual 函數(shù),如果子類覆蓋它的函數(shù)不加virtual ,也能實(shí)現(xiàn)多態(tài)?答:virtual修飾符會(huì)被隱形繼承的。virtual可加可不加,子
9、類覆蓋它的函數(shù)不加virtual ,也能實(shí)現(xiàn)多態(tài)。 30. 函數(shù)重載是什么意思?它與虛函數(shù)的概念有什么區(qū)別?答:函數(shù)重載是一個(gè)同名函數(shù)完成不同的功能,編譯系統(tǒng)在編譯階段通過函數(shù)參數(shù)個(gè)數(shù)、參數(shù)類型不同,函數(shù)的返回值來區(qū)分該調(diào)用哪一個(gè)函數(shù),即實(shí)現(xiàn)的是靜態(tài)的多態(tài)性。但是記住:不能僅僅通過函數(shù)返回值不同來實(shí)現(xiàn)函數(shù)重載。而虛函數(shù)實(shí)現(xiàn)的是在基類中通過使用關(guān)鍵字virtual來申明一個(gè)函數(shù)為虛函數(shù),含義就是該函數(shù)的功能可能在將來的派生類中定義或者在基類的基礎(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è)縱向的概念,也即在基類和派生
10、類間實(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è)類的成員函數(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è)類的成員函數(shù)時(shí)在該函數(shù)前加CALLBACK即將其定義為回調(diào)函數(shù),函數(shù)的實(shí)現(xiàn)和普通成員函數(shù)沒有區(qū)別 33. 虛函數(shù)是怎么實(shí)現(xiàn)的?答:簡(jiǎn)單說來使用了虛函數(shù)表.
11、0;34. 抽象類不會(huì)產(chǎn)生實(shí)例,所以不需要有構(gòu)造函數(shù)。 錯(cuò) 35. 從一個(gè)模板類可以派生新的模板類,也可以派生非模板類。 對(duì) 36. main 函數(shù)執(zhí)行以前,還會(huì)執(zhí)行什么代碼?答案:全局對(duì)象的構(gòu)造函數(shù)會(huì)在main 函數(shù)之前執(zhí)行。 37. 當(dāng)一個(gè)類A 中沒有生命任何成員變量與成員函數(shù),這時(shí)sizeof(A)的值是多少,如果不是零,請(qǐng)解釋一下編譯器為什么沒有讓它為零。(Autodesk)答案:肯定不是零。舉個(gè)反例,如果是零的話,聲明一個(gè)class A10對(duì)象數(shù)組,而每一個(gè)對(duì)象占用的空間是零,這時(shí)就沒辦法區(qū)分A0,A1了。
12、 38. delete與 delete 區(qū)別:答:delete只會(huì)調(diào)用一次析構(gòu)函數(shù),而delete會(huì)調(diào)用每一個(gè)成員的析構(gòu)函數(shù)。 39子類析構(gòu)時(shí)要調(diào)用父類的析構(gòu)函數(shù)嗎?答:會(huì)調(diào)用。析構(gòu)函數(shù)調(diào)用的次序是先派生類的析構(gòu)后基類的析構(gòu),也就是說在基類的的析構(gòu)調(diào)用的時(shí)候,派生類的信息已經(jīng)全部銷毀了 40. 繼承的優(yōu)缺點(diǎn)。1、類繼承是在編譯時(shí)刻靜態(tài)定義的,且可直接使用,2、類繼承可以較方便地改變父類的實(shí)現(xiàn)。缺點(diǎn):1、因?yàn)槔^承在編譯時(shí)刻就定義了,所以無法在運(yùn)行時(shí)刻改變從父類繼承的實(shí)現(xiàn)2、父類通常至少定義了子類的部分行為,父類的任何改變都可能影響子類的行為3
13、、如果繼承下來的實(shí)現(xiàn)不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。這種依賴關(guān)系限制了靈活性并最終限制了復(fù)用性。 41. 解釋堆和棧的區(qū)別。 答:棧區(qū)(stack) 由編譯器自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。堆(heap)一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時(shí)可能由OS回收 。 42. 一個(gè)類的構(gòu)造函數(shù)和析構(gòu)函數(shù)什么時(shí)候被調(diào)用,是否需要手工調(diào)用?答:構(gòu)造函數(shù)在創(chuàng)建類對(duì)象的時(shí)候被自動(dòng)調(diào)用,析構(gòu)函數(shù)在類對(duì)象生命期結(jié)束時(shí),由系統(tǒng)自動(dòng)調(diào)用。 43. 何時(shí)需要預(yù)編譯:答:總是使用不經(jīng)常改動(dòng)的大型代碼體
14、。程序由多個(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. 接口重用:為了類在繼承和派生的時(shí)候,保證使用家族中任一類的實(shí)例的某一屬性時(shí)的正確調(diào)用 45. 虛擬函數(shù)與普通成員函數(shù)的區(qū)別?內(nèi)聯(lián)函數(shù)和構(gòu)造函數(shù)能否為虛擬函數(shù)?答案:區(qū)別:虛擬函數(shù)有virtual關(guān)鍵字,有虛擬指針和虛函數(shù)表,虛擬指針就是虛擬函數(shù)的接口,而普通成員函數(shù)沒有。內(nèi)聯(lián)函數(shù)和構(gòu)造函數(shù)不能為虛擬函數(shù)。
15、46. 構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序? 析構(gòu)函數(shù)為什么要虛擬?答案:構(gòu)造函數(shù)的調(diào)用順序:基類構(gòu)造函數(shù)對(duì)象成員構(gòu)造函數(shù)派生類構(gòu)造函數(shù);析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)相反。析構(gòu)函數(shù)虛擬是為了防止析構(gòu)不徹底,造成內(nèi)存的泄漏。 47. C+中類型為private的成員變量可以由哪些函數(shù)訪問?答:只可以由本類中的成員函數(shù)和友元函數(shù)訪問 48. 請(qǐng)說出類中private,protect,public三種訪問限制類型的區(qū)別答:private是私有類型,只有本類中的成員函數(shù)訪問;protect是保護(hù)型的,本類和繼承類可以訪問;public是公有類型,任何類都可以訪問.
16、 49. 類中成員變量怎么進(jìn)行初始化?答:可以通過構(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í)間內(nèi)完成特定的任務(wù),實(shí)時(shí)性與可靠性。 54.
17、全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別?答 、全局變量?jī)?chǔ)存在靜態(tài)數(shù)據(jù)區(qū),局部變量在堆棧中。 55. 堆棧溢出一般是由什么原因?qū)е碌?答 、沒有回收垃圾資源 56. 什么函數(shù)不能聲明為虛函數(shù)?答 構(gòu)造函數(shù)(constructor) 57. IP地址的編碼分為哪倆部分?答 IP地址由兩部分組成,網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)。 58. 不能做switch()的參數(shù)類型是:答 、switch的參數(shù)不能為實(shí)型。 59. 如何引用一個(gè)已經(jīng)定義過的全局變量?答 、可以用引用頭文件的方式,也可以用
18、extern關(guān)鍵字,如果用引用頭文件方式來引用某個(gè)在頭文件中聲明的全局變理,假定你將那個(gè)變寫錯(cuò)了,那么在編譯期間會(huì)報(bào)錯(cuò),如果你用extern方式引用時(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+用inline61. C+是不是類型安全的?答案:不是。兩個(gè)不同類型的指針之間可以強(qiáng)制轉(zhuǎn)換(用reinterpret cast) 62. 當(dāng)一個(gè)類A 中沒有生命任何成員變量與成員函數(shù),這時(shí)sizeof(A)的值是多少,請(qǐng)解釋
19、一下編譯器為什么沒有讓它為零。答案:為1。舉個(gè)反例,如果是零的話,聲明一個(gè)class A10對(duì)象數(shù)組,而每一個(gè)對(duì)象占用的空間是零,這時(shí)就沒辦法區(qū)分A0,A1了。 63. 簡(jiǎn)述數(shù)組與指針的區(qū)別?答:數(shù)組要么在靜態(tài)存儲(chǔ)區(qū)被創(chuàng)建(如全局?jǐn)?shù)組),要么在棧上被創(chuàng)建。指針可以隨時(shí)指向任意類型的內(nèi)存塊。(1)修改內(nèi)容上的區(qū)別char a = “hello”;a0 = X;char *p = “world”; / 注意p 指向常量字符串p0 = X; / 編譯器不能發(fā)現(xiàn)該錯(cuò)誤,運(yùn)行時(shí)錯(cuò)誤(2) 用運(yùn)算符sizeof 可以計(jì)算出數(shù)組的容量(字節(jié)數(shù))。sizeof(p),p 為指針得到的是一
20、個(gè)指針變量的字節(jié)數(shù),而不是p 所指的內(nèi)存容量。 64. C+函數(shù)中值的傳遞方式答:有三種方式:值傳遞、指針傳遞、引用傳遞 65. 內(nèi)存的分配方式答:分配方式有三種,1、 靜態(tài)存儲(chǔ)區(qū),是在程序編譯時(shí)就已經(jīng)分配好的,在整個(gè)運(yùn)行期間都存在,如全局變量、常量。2、 棧上分配,函數(shù)內(nèi)的局部變量就是從這分配的,但分配的內(nèi)存容易有限。3、 堆上分配,也稱動(dòng)態(tài)分配,如我們用new,malloc分配內(nèi)存,用delete,free來釋放的內(nèi)存。 66. extern“C”有什么作用?答:Extern “C”是由提供的一個(gè)連接交換指定符號(hào),用于告訴這
21、段代碼是函數(shù)。這是因?yàn)镃+編譯后庫(kù)中函數(shù)名會(huì)變得很長(zhǎng),與C生成的不一致,造成不能直接調(diào)用C函數(shù),加上extren “c”后,C+就能直接調(diào)用C函數(shù)了。Extern “C”主要使用正規(guī)DLL函數(shù)的引用和導(dǎo)出 和 在C+包含C函數(shù)或C頭文件時(shí)使用。使用時(shí)在前面加上extern “c” 關(guān)鍵字即可。可以用一句話概括extern “C”這個(gè)聲明的真實(shí)目的:實(shí)現(xiàn)C+與C及其它語(yǔ)言的混合編程。 67. 用什么函數(shù)開啟新進(jìn)程、線程。答案:線程:CreateThread/AfxBeginThread等進(jìn)程:CreateProcess等 68. SendM
22、essage和PostMessage有什么區(qū)別答案:SendMessage是阻塞的,等消息被處理后,代碼才能走到SendMessage的下一行。PostMessage是非阻塞的,不管消息是否已被處理,代碼馬上走到PostMessage的下一行。 69. CMemoryState主要功能是什么答案:查看內(nèi)存使用情況,解決內(nèi)存泄露問題。 70. #include 和 #include “filename.h” 有什么區(qū)別?答:對(duì)于#include ,編譯器從標(biāo)準(zhǔn)庫(kù)路徑開始搜索 filename.h對(duì)于#include “filename.h” ,編譯器從
23、用戶的工作路徑開始搜索 filename.h 71. 處理器標(biāo)識(shí)#error的目的是什么?答:編譯時(shí)輸出一條錯(cuò)誤信息,并中止繼續(xù)編譯。 72. #if!defined(AFX_HADE_H)#define(AFX_HADE_H)#endif作用?答:防止該頭文件被重復(fù)引用。 73. 在定義一個(gè)宏的時(shí)候要注意什么?答:定義部分的每個(gè)形參和整個(gè)表達(dá)式都必須用括號(hào)括起來,以避免不可預(yù)料的錯(cuò)誤發(fā)生 74. 數(shù)組在做函數(shù)實(shí)參的時(shí)候會(huì)轉(zhuǎn)變?yōu)槭裁搭愋?答:數(shù)組在做實(shí)參時(shí)會(huì)變成指針類型。 75. 系統(tǒng)會(huì)自動(dòng)打開和
24、關(guān)閉的3個(gè)標(biāo)準(zhǔn)的文件是?(1) 標(biāo)準(zhǔn)輸入-鍵盤stdin(2) 標(biāo)準(zhǔn)輸出-顯示器stdout(3) 標(biāo)準(zhǔn)出錯(cuò)輸出-顯示器stderr 76. .在Win32下 char, int, float, double各占多少位?(1) Char 占用8位(2) Int 占用32位(3) Float
25、 占用32位(4) Double 占用64位 77. strcpy()和memcpy()的區(qū)別?答:strcpy()和memcpy()都可以用來拷貝字符串,strcpy()拷貝以0結(jié)束,但memcpy()必須指定拷貝的長(zhǎng)度。 78. 說明define和const在語(yǔ)法和含義上有什么不同?答:(1) #define是C語(yǔ)法中定義符號(hào)變量的方法,符號(hào)常量只是用來表達(dá)一個(gè)值,在編譯階段符號(hào)就被值替換了,它沒有類型;(2) Const是C+
26、語(yǔ)法中定義常變量的方法,常變量具有變量特性,它具有類型,內(nèi)存中存在以它命名的存儲(chǔ)單元,可以用sizeof測(cè)出長(zhǎng)度。 79. 說出字符常量和字符串常量的區(qū)別,并使用運(yùn)算符sizeof計(jì)算有什么不用?答:字符常量是指單個(gè)字符,字符串常量以0結(jié)束,使用運(yùn)算符sizeof計(jì)算多占一字節(jié)的存儲(chǔ)空間。 80. 簡(jiǎn)述全局變量的優(yōu)缺點(diǎn)?答:全局變量也稱為外部變量,它是在函數(shù)外部定義的變量,它屬于一個(gè)源程序文件,它保存上一次被修改后的值,便于數(shù)據(jù)共享,但不方便管理,易引起意想不到的錯(cuò)誤。 81. 總結(jié)static的應(yīng)用和作用?答:(1)函數(shù)體內(nèi)s
27、tatic變量的作用范圍為該函數(shù)體,不同于auto變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時(shí)仍維持上次的值;(2)在模塊內(nèi)的static全局變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問;(3)在模塊內(nèi)的static函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個(gè)函數(shù)的使用范圍被限制在聲明它的模塊內(nèi);(4)在類中的static成員變量屬于整個(gè)類所擁有,對(duì)類的所有對(duì)象只有一份拷貝;(5)在類中的static成員函數(shù)屬于整個(gè)類所擁有,這個(gè)函數(shù)不接收this指針,因而只能訪問類的static成員變量。 82. 總結(jié)const的應(yīng)用和作用?答:(1)欲阻止一個(gè)變量被改
28、變,可以使用const關(guān)鍵字。在定義該const變量時(shí),通常需要對(duì)它進(jìn)行初始化,因?yàn)橐院缶蜎]有機(jī)會(huì)再去改變它了;(2)對(duì)指針來說,可以指定指針本身為const,也可以指定指針?biāo)傅臄?shù)據(jù)為const,或二者同時(shí)指定為const;(3)在一個(gè)函數(shù)聲明中,const可以修飾形參,表明它是一個(gè)輸入?yún)?shù),在函數(shù)內(nèi)部不能改變其值;(4)對(duì)于類的成員函數(shù),若指定其為const類型,則表明其是一個(gè)常函數(shù),不能修改類的成員變量;(5)對(duì)于類的成員函數(shù),有時(shí)候必須指定其返回值為const類型,以使得其返回值不為“左值”。 83. 什么是指針?談?wù)勀銓?duì)指針的理解?答:指針是一個(gè)變量,該變量專門
29、存放內(nèi)存地址;指針變量的類型取決于其指向的數(shù)據(jù)類型,在所指數(shù)據(jù)類型前加*指針變量的特點(diǎn)是它可以訪問所指向的內(nèi)存。 84. 什么是常指針,什么是指向常變量的指針?答:常指針的含義是該指針?biāo)赶虻牡刂凡荒茏儯摰刂匪赶虻膬?nèi)容可以變化,使用常指針可以保證我們的指針不能指向其它的變量,指向常變量的指針是指該指針的變量本身的地址可以變化,可以指向其它的變量,但是它所指的內(nèi)容不可以被修改。指向長(zhǎng)變量的指針定義, 85. 函數(shù)指針和指針函數(shù)的區(qū)別?答:函數(shù)指針是指向一個(gè)函數(shù)入口的指針;指針函數(shù)是函數(shù)的返回值是一個(gè)指針類型。 87. 簡(jiǎn)述D
30、ebug版本和Release版本的區(qū)別?答:Debug版本是調(diào)試版本,Release版本是發(fā)布給用戶的最終非調(diào)試的版本, 88. 指針的幾種典型應(yīng)用情況?答:int *pn;指針數(shù)組,每個(gè)元素均為指向整型數(shù)據(jù)的指針。int (*)pn;p為指向一維數(shù)組的指針,這個(gè)一維數(shù)組有n個(gè)整型數(shù)據(jù)。int *p();函數(shù)帶回指針,指針指向返回的值。int (*)p();-p為指向函數(shù)的指針。 89. static函數(shù)與普通函數(shù)有什么區(qū)別?答:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝 90. struct(結(jié)構(gòu))
31、和 union(聯(lián)合)的區(qū)別?答:1. 結(jié)構(gòu)和聯(lián)合都是由多個(gè)不同的數(shù)據(jù)類型成員組成, 但在任何同一時(shí)刻, 聯(lián)合中只存放了一個(gè)被選中的成員(所有成員共用一塊地址空間), 而結(jié)構(gòu)的所有成員都存在(不同成員的存放地址不同)。2. 對(duì)于聯(lián)合的不同成員賦值, 將會(huì)對(duì)其它成員重寫, 原來成員的值就不存在了, 而對(duì)于結(jié)構(gòu)的不同成員賦值是互不影響的。 91. class 和 struct 的區(qū)別?答:struct 的成員默認(rèn)是公有的,而類的成員默認(rèn)是私有的。 92. 簡(jiǎn)述枚舉類型?答:枚舉方便一次定義一組常量,使用起來很方便; 93.
32、; assert()的作用?答:ASSERT()是一個(gè)調(diào)試程序時(shí)經(jīng)常使用的宏,在程序運(yùn)行時(shí)它計(jì)算括號(hào)內(nèi)的表達(dá)式,如果表達(dá)式為FALSE (0), 程序?qū)?bào)告錯(cuò)誤,并終止執(zhí)行。如果表達(dá)式不為0,則繼續(xù)執(zhí)行后面的語(yǔ)句。這個(gè)宏通常原來判斷程序中是否出現(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.
33、0; 在什么時(shí)候使用常引用?答:如果既要利用引用提高程序的效率,又要保護(hù)傳遞給函數(shù)的數(shù)據(jù)不在函數(shù)中被改變,就應(yīng)使用常引用。 97. 類的聲明和實(shí)現(xiàn)的分開的好處?答: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)用程序通過消息循環(huán)不
34、斷獲取消息、處理消息。3. 消息處理:消息循環(huán)負(fù)責(zé)將消息派發(fā)到相關(guān)的窗口上使用關(guān)聯(lián)的窗口過程函數(shù)進(jìn)行處理。 99. 什么是消息映射?答:消息映射就是讓程序員指定MFC類(有消息處理能力的類)處理某個(gè)消息。然后由程序員完成對(duì)該處理函數(shù)的編寫,以實(shí)現(xiàn)消息處理功能。 100. 什么是UDP和TCP的區(qū)別是什么?答:TCP的全稱為傳輸控制協(xié)議。這種協(xié)議可以提供面向連接的、可靠的、點(diǎn)到點(diǎn)的通信。UDP全稱為用戶報(bào)文協(xié)議,它可以提供非連接的不可靠的點(diǎn)到多點(diǎn)的通信。用TCP還是UDP,那要看你的程序注重哪一個(gè)方面?可靠還是快速?101. w
35、insock建立連接的主要實(shí)現(xiàn)步驟?答:服務(wù)器端:socket()建立套接字,綁定(bind)并監(jiān)聽(listen),用accept()等待客戶端連接, accept()發(fā)現(xiàn)有客戶端連接,建立一個(gè)新的套接字,自身重新開始等待連接。該新產(chǎn)生的套接字使用send()和recv()寫讀數(shù)據(jù),直至數(shù)據(jù)交換完畢,closesocket()關(guān)閉套接字。客戶端:socket()建立套接字,連接(connect)服務(wù)器,連接上后使用send()和recv(),在套接字上寫讀數(shù)據(jù),直至數(shù)據(jù)交換完畢,closesocket()關(guān)閉套接字。 102. 進(jìn)程間主要的通訊方式?答:信號(hào)量,管道,消息,共享內(nèi)存
36、 103. 構(gòu)成Win32 API 函數(shù)的三個(gè)動(dòng)態(tài)鏈接庫(kù)是什么?答:內(nèi)核庫(kù),用戶界面管理庫(kù),圖形設(shè)備界面庫(kù)。 104. 創(chuàng)建一個(gè)窗口的步驟是?答:填充一個(gè)窗口類結(jié)構(gòu)->注冊(cè)這個(gè)窗口類->然后再創(chuàng)建窗口->顯示窗口->更新窗口。 105. 模態(tài)對(duì)話框和非模態(tài)對(duì)話框有什么區(qū)別?答:1.調(diào)用規(guī)則不同:前者是用DoModal()調(diào)用,后者通過屬性和ShowWindow()來顯示。2模態(tài)對(duì)話框在沒有關(guān)閉前用戶不能進(jìn)行其他操作,而非模態(tài)對(duì)話框可以。3非模態(tài)對(duì)話框創(chuàng)建時(shí)必須編寫自己的共有構(gòu)造函數(shù),還要調(diào)用Create()函數(shù)。 106. 從ED
37、IT框中取出數(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是Graphics Device Interface 的縮寫,譯為:圖形設(shè)備接口;是一個(gè)在Windows應(yīng)用程序中執(zhí)行與設(shè)備無關(guān)的函數(shù)庫(kù),這些函數(shù)在不同的輸出設(shè)備上產(chǎn)生圖形以及文字輸出。 108. windows消息分為幾類?并對(duì)各類做簡(jiǎn)單描述。答:1.窗口消息:與窗口相關(guān)的消息,除WM_COMMAND之外的所有以WM_開頭的消息;2.命令消息;用于處理用戶請(qǐng)求,
38、以WM_COMMAND表示的消息;3.控件通知消息:統(tǒng)一由WM_NOTIFT表示,4.用戶自定義消息。 109. 如何自定義消息?答:使用WM_USER 和WM_APP兩個(gè)宏來自定義消息, 110. 簡(jiǎn)述Visual C+ 、Win32 API和MFC之間的關(guān)系?答:(1) Visual C+是一個(gè)以C+程序設(shè)計(jì)語(yǔ)言為基礎(chǔ)的、集成的、可視化的編程環(huán)境;(2) Win32 API是32位Windows操作系以C/C+形式提供的一組應(yīng)用程序接口;(3) MFC是對(duì)Win32 API的封裝,簡(jiǎn)化了開發(fā)過程。&
39、#160;111.怎樣消除多重繼承中的二義性?答: 1成員限定符 2虛基類 112什么叫靜態(tài)關(guān)聯(lián),什么叫動(dòng)態(tài)關(guān)聯(lián)答:在多態(tài)中,如果程序在編譯階段就能確定實(shí)際執(zhí)行動(dòng)作,則稱靜態(tài)關(guān)聯(lián),如果等到程序運(yùn)行才能確定叫動(dòng)態(tài)關(guān)聯(lián)。 113多態(tài)的兩個(gè)必要條件答:1.一個(gè)基類的指針或引用指向一個(gè)派生類對(duì)象 2.虛函數(shù) 114.什么叫智能指針?答:當(dāng)一個(gè)類中,存在一個(gè)指向另一個(gè)類對(duì)象的指針時(shí),對(duì)指針運(yùn)算符進(jìn)行重載,那么當(dāng)前類對(duì)象可以通過指針像調(diào)用自身成員一樣調(diào)用另一個(gè)類的成員。 115.什么時(shí)候需要用虛析構(gòu)函數(shù)?答:當(dāng)基類指針指向用new運(yùn)算符生成的
40、派生類對(duì)象時(shí),delete基類指針時(shí),派生類部分沒有釋放掉而造成釋放不徹底現(xiàn)象,需要虛析構(gòu)函數(shù)。 補(bǔ)充:虛函數(shù)就是讓派生類調(diào)用基類的虛函數(shù)。 116. MFC中,大部分類是從哪個(gè)類繼承而來?答:CObject 117.什么是平衡二叉樹?答:左右子樹都是平衡二叉樹,而且左右子樹的深度差值的約對(duì)值不大于1。 118.語(yǔ)句for( ;1 ;)有什么問題?它是什么意思?答:無限循環(huán),和while(1)相同。 119派生新類的過程要經(jīng)歷三個(gè)步驟答:1.吸收基類成員 2.改造基類成員 3.添加新
41、成員 121. TCP/IP 建立連接的過程答:在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。第一次握手:建立連接時(shí),客戶端發(fā)送連接請(qǐng)求到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);第二次握手:服務(wù)器收到客戶端連接請(qǐng)求,向客戶端發(fā)送允許連接應(yīng)答,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);第三次握手:客戶端收到服務(wù)器的允許連接應(yīng)答,向服務(wù)器發(fā)送確認(rèn),客戶端和服務(wù)器進(jìn)入通信狀態(tài),完成三次握手 122. memset ,memcpy 的區(qū)別答:memset用來對(duì)一段內(nèi)存空間全部設(shè)置為某個(gè)字符,一般用在對(duì)定義的字符串進(jìn)行初始化為0。memcpy用來
42、做內(nèi)存拷貝,你可以拿它拷貝任何數(shù)據(jù)類型的對(duì)象,可以指定拷貝的數(shù)據(jù)長(zhǎng)度; 123. 在C+ 程序中調(diào)用被 C 編譯器編譯后的函數(shù),為什么要加 extern “C”?答:C+語(yǔ)言支持函數(shù)重載,C 語(yǔ)言不支持函數(shù)重載。函數(shù)被C+編譯后在庫(kù)中的名字與C 語(yǔ)言的不同。假設(shè)某個(gè)函數(shù)的原型為: void foo(int x, int y);該函數(shù)被C 編譯器編譯后在庫(kù)中的名字為_foo , 而C+編譯器則會(huì)產(chǎn)生像_foo_int_int 之類的名字。C+提供了C 連接交換指定符號(hào)extern“C”來解決名字匹配問題。 124怎樣定義一個(gè)純虛函數(shù)?含有純虛函數(shù)的類稱為什么?答:在虛函數(shù)的后
43、面加=0,含有虛函數(shù)的類稱為抽象類。 125已知strcpy函數(shù)的原型是:char * strcpy(char * strDest,const char * strSrc);不調(diào)用庫(kù)函數(shù),實(shí)現(xiàn)strcpy函數(shù)。其中,strSrc是原字符串,strDest是目標(biāo)字符串 。答案:char *strcpy(char *strDest, const char *strSrc)if ( strDest = NULL | strSrc = NULL)return NULL ;if ( strDest = strSrc)return strDest ;char *tempptr = strDest
44、 ; /指針tempptr指向strDest的地址;while( (*strDest+ = *strSrc+) != 0) /注意:別忘了轉(zhuǎn)義符;;return tempptr ; /返回指針向的地址; 126已知類String 的原型為:class Stringpublic:String(const char *str = NULL); / 普通構(gòu)造函數(shù)String(const String &other); / 拷貝構(gòu)造函數(shù) String(void);
45、 / 析構(gòu)函數(shù)String & operate =(const String &other); / 賦值函數(shù)private:char *m_data;
46、 / 用于保存字符串;請(qǐng)編寫String 的上述4 個(gè)函數(shù)。答案:/ 普通構(gòu)造函數(shù)String:String(const char *str)if ( str = NULL ) /strlen在參數(shù)為NULL時(shí)會(huì)拋異常才會(huì)有這步判斷m_data = new char1 ;m_data0 = ” ;elsem_data = new ch
47、arstrlen(str) + 1;strcpy(m_data,str);/拷貝構(gòu)造函數(shù)String:String(const String &other)m_data = new charstrlen(other.m_data) + 1;strcpy(m_data,other.m_data);/賦值函數(shù)(重載運(yùn)算符)String & String:operator =(const String &other)if ( this = &other)return *this ;delete m_data;m_data = new charstrlen(other.
48、m_data) + 1;strcpy(m_data,other.m_data);return *this ;/析構(gòu)函數(shù)String: String(void)delete m_data ; 127類成員函數(shù)的重載、覆蓋和隱藏的區(qū)別答案:成員函數(shù)被重載的特征:(1)相同的范圍(在同一個(gè)類中);(2)函數(shù)名字相同;(3)參數(shù)不同;(4)virtual 關(guān)鍵字可有可無。覆蓋是指派生類函數(shù)覆蓋基類函數(shù),特征是:(1)不同的范圍(分別位于派生類與基類);(2)函數(shù)名字相同;(3)參數(shù)相同;(4)基類函數(shù)必須有virtual 關(guān)鍵字。“隱藏”是指派生類的函數(shù)屏蔽了與其同名的基類函數(shù),規(guī)則如下:(
49、1)如果派生類的函數(shù)與基類的函數(shù)同名,但是參數(shù)不同。此時(shí),不論有無virtual關(guān)鍵字,基類的函數(shù)將被隱藏(注意別與重載混淆)。(2)如果派生類的函數(shù)與基類的函數(shù)同名,并且參數(shù)也相同,但是基類函數(shù)沒有virtual 關(guān)鍵字。此時(shí),基類的函數(shù)被隱藏(注意別與覆蓋混淆) 128如何打印出當(dāng)前源文件的文件名以及源文件的當(dāng)前行號(hào)?答案:cout << _FILE_ ;cout<<_LINE_ ;_FILE_和_LINE_是系統(tǒng)預(yù)定義宏,這種宏并不是在某個(gè)文件中定義的,而是由編譯器定義的。 129文件中有一組整數(shù),要求排序后輸出到另一個(gè)文件中答案:void O
50、rder(vector &data) /冒泡排序int count = data.size() ;int tag = false ;for ( int i = 0 ; i < count ; i+)for ( int j = 0 ; j < count i 1 ; j+)if ( dataj > dataj+1)tag = true ;int temp = dataj ;dataj = dataj+1 ;dataj+1 = temp ;if ( !tag )break ; void main( void )vectordata;ifstream
51、in(“c:data.txt”);if ( !in)cout<<”file error!”;exit(1);int temp;while (!in.eof()in>>temp;data.push_back(temp);in.close();Order(data);ofstream out(“c:result.txt”);if ( !out)cout<<”file error!”;exit(1);for ( i = 0 ; i < data.size() ; i+)out<<datai<<” “;out.close();
52、;130一個(gè)鏈表的結(jié)點(diǎn)結(jié)構(gòu) struct Nodeint data ;Node *next ;typedef struct Node Node ;已知鏈表的頭結(jié)點(diǎn)head,寫一個(gè)函數(shù)把這個(gè)鏈表逆序 ( Intel)答案:Node * ReverseList(Node *head) /鏈表逆序if ( head = NULL | head->next = NULL )return head;Node *p1 = head ;Node *p2 = p1->next ;Node *p3 = p2->next ;p1->next = NULL ;while ( p3
53、 != NULL )p2->next = p1 ;p1 = p2 ;p2 = p3 ;p3 = p3->next ;p2->next = p1 ;head = p2 ;return head ; 131. 一個(gè)鏈表的結(jié)點(diǎn)結(jié)構(gòu)struct Nodeint data ;Node *next ;typedef struct Node Node ;已知兩個(gè)鏈表head1 和head2 各自有序,請(qǐng)把它們合并成一個(gè)鏈表依然有序。答案:Node * Merge(Node *head1 , Node *head2)if ( head1 = NULL)return head2 ;i
54、f ( head2 = NULL)return head1 ;Node *head = NULL ;Node *p1 = NULL;Node *p2 = NULL;if ( head1->data data )head = head1 ;p1 = head1->next;p2 = head2 ;elsehead = head2 ;p2 = head2->next ;p1 = head1 ;Node *pcurrent = head ;while ( p1 != NULL && p2 != NULL)if ( p1->data data )pcurrent
55、->next = p1 ;pcurrent = p1 ;p1 = p1->next ;elsepcurrent->next = p2 ;pcurrent = p2 ;p2 = p2->next ;if ( p1 != NULL )pcurrent->next = p1 ;if ( p2 != NULL )pcurrent->next = p2 ;return head ; 132.已知兩個(gè)鏈表head1 和head2 各自有序,請(qǐng)把它們合并成一個(gè)鏈表依然有序,這次要求用遞歸方法進(jìn)行。 ( Autodesk)答案:Node * MergeRecurs
56、ive(Node *head1 , Node *head2)if ( head1 = NULL )return head2 ;if ( head2 = NULL)return head1 ;Node *head = NULL ;if ( head1->data data )head = head1 ;head->next = MergeRecursive(head1->next,head2);elsehead = head2 ;head->next = MergeRecursive(head1,head2->next);return head ; 133分析一下這段程序的輸出 (Autodesk)class Bpublic:B()cout<<”default constructor”<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 筆的制造生產(chǎn)過程優(yōu)化與仿真技術(shù)考核試卷
- 紙板容器工廠環(huán)境噪聲治理考核試卷
- 石棉水泥制品的國(guó)內(nèi)外質(zhì)量標(biāo)準(zhǔn)對(duì)比考核試卷
- 外科個(gè)案護(hù)理專題分析
- 新生兒高膽紅素血癥業(yè)務(wù)查房
- 腦癱患者麻醉管理規(guī)范
- Heneicomycin-生命科學(xué)試劑-MCE
- 湖北省2025年中考第三次模擬考試道德與法治試卷(解析版)
- 房地產(chǎn)行業(yè)深度報(bào)告-“好房子”系列專題一:四代宅崛起政策紅利與產(chǎn)品創(chuàng)新驅(qū)動(dòng)居住升級(jí)
- 2025年下半年食品飲料行業(yè)寒來暑往結(jié)構(gòu)破局
- 變電工程施工合同協(xié)議書
- 電工技術(shù)-北京科技大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 星海音樂學(xué)院樂理試題A卷
- 2019年4月27日山東省紀(jì)委監(jiān)委遴選公務(wù)員考試真題及答案
- ktv包房服務(wù)員崗位職責(zé)8篇
- 西安某大跨度鋼桁架人行天橋結(jié)構(gòu)設(shè)計(jì)分析
- 新疆全部及全國(guó)部分加氣站分布情況6
- 初中學(xué)段勞動(dòng)任務(wù)清單(七到九年級(jí))
- 2023年中國(guó)各地磁偏角
- 六維領(lǐng)導(dǎo)力專題知識(shí)
- 【護(hù)士資格考試】云南省精神病醫(yī)院模擬檢測(cè)練習(xí)題
評(píng)論
0/150
提交評(píng)論