第一篇:C.C++程序員面試背誦題目
1.面向對象的程序設計思想是什么?
答:把數據結構和對數據結構進行操作的方法封裝形成一個個的對象。
2.什么是類?
答:把一些具有共性的對象歸類后形成一個集合,也就是所謂的類。
3.對象都具有的二方面特征是什么?分別是什么含義? 答:對象都具有的特征是:靜態特征和動態特征。
靜態特征是指能描述對象的一些屬性; 動態特征是指對象表現出來的行為 ;
4.在頭文件中進行類的聲明,在對應的實現文件中進行類的定義有什么意義?
答:1這樣可以提高編譯效率,因為分開的話只需要編譯一次生成對應的.obj文件后,再次應用該類的地方,這個類就不會被再次編譯,從而大大提高了效率。
2隱藏了代碼;
5.在類的內部定義成員函數的函數體,這種函數會具備那種屬性? 答:這種函數會自動為內聯函數,這種函數在函數調用的地方在編譯階段都會進行代碼替換。
6.成員函數通過什么來區分不同對象的成員數據?為什么它能夠區分? 答:通過this指針來區分的,因為它指向的是對象的首地址。
7.C++編譯器自動為類產生的四個缺省函數是什么?
答:默認構造函數,拷貝構造函數,析構函數,賦值函數。
8.拷貝構造函數在哪幾種情況下會被調用?
答:1.當類的一個對象去初始化該類的另一個對象時;
2.如果函數的形參是類的對象,調用函數進行形參和實參結合時; 3.如果函數的返回值是類對象,函數調用完成返回時。
9.構造函數與普通函數相比在形式上有什么不同?(構造函數的作用,它的聲明形式來分析)答:構造函數是類的一種特殊成員函數,一般情況下,它是專門用來初始化對象成員變量的。
構造函數的名字必須與類名相同,它不具有任何類型,不返回任何值。
10.什么時候必須重寫拷貝構造函數?
答:當構造函數涉及到動態存儲分配空間時,要自己寫拷貝構造函數,并且要深拷貝。
11.構造函數的調用順序是什么? 答:1.先調用基類構造函數
2.按聲明順序初始化數據成員
3.最后調用自己的構造函數。
12.哪幾種情況必須用到初始化成員列表? 答:類的成員是常量成員初始化;
類的成員是對象成員初始化,而該對象沒有無參構造函數。類的成員常變量時。
13.什么是常對象?
答:常對象是指在任何場合都不能對其成員的值進行修改的對象。
14.靜態函數存在的意義?
答:1靜態私有成員在類外不能被訪問,可通過類的靜態成員函數來訪問;
2當類的構造函數是私有的時,不像普通類那樣實例化自己,只能通過靜態成員函數來調用構造函數。
15.在類外有什么辦法可以訪問類的非公有成員? 答:友元,繼承,公有成員函數。
16.什么叫抽象類?
答:不用來定義對象而只作為一種基本類型用作繼承的類。
17.運算符重載的意義?
答:為了對用戶自定義數據類型的數據的操作與內定義的數據類型的數據的操作形式一致。
18.不允許重載的5個運算符是哪些? 答:
1..*(成員指針訪問運算符號)2.::域運算符
3.sizeof 長度運算符號 4.?:條件運算符號 5..(成員訪問符)
19.運算符重載的三種方式?
答:普通函數,友元函數,類成員函數。
20.流運算符為什么不能通過類的成員函數重載?一般怎么解決? 答:因為通過類的成員函數重載必須是運算符的第一個是自己,而對流運算的重載要求第一個參數是流對象。一般通過友元來解決。
21.賦值運算符和拷貝構造函數的區別與聯系? 答:相同點:都是將一個對象copy到另一個中去。不同點:拷貝構造函數涉及到要新建立一個對象。
22.在哪種情況下要調用該類的析構函數? 答:對象生命周期結束時。
23.對象間是怎樣實現數據的共享的? 答:通過類的靜態成員變量來實現的。靜態成員變量占有自己獨立的空間不為某個對象所私有。
24.友元關系有什么特性?
答:單向的,非傳遞的,不能繼承的。
25.對對象成員進行初始化的次序是什么? 答:它的次序完全不受它們在初始化表中次序的影響,只與成員對象在類中聲明的次序來決定的。
26.類和對象之間的關系是什么?
答:類是對象的抽象,對象是類的實例。
27.對類的成員的訪問屬性有什么? 答:public,protected,private。
28.const char *p,char * const p;的區別
如果const位于星號的左側,則const就是用來修飾指針所指向的變量,即指針指向為常量; 如果const位于星號的右側,const就是修飾指針本身,即指針本身是常量。
29.是不是一個父類寫了一個virtual 函數,如果子類覆蓋它的函數不加virtual ,也能實現多態? virtual修飾符會被隱形繼承的。
virtual可加可不加,子類覆蓋它的函數不加virtual ,也能實現多態。
30.函數重載是什么意思?它與虛函數的概念有什么區別? 函數重載是一個同名函數完成不同的功能,編譯系統在編譯階段通過函數參數個數、參數類型不同,即實現的是靜態的多態性。但是記住:不能僅僅通過函數返回值不同來實現函數重載。而虛函數實現的是在基類中通過使用關鍵字virtual來申明一個函數為虛函數,含義就是該函數的功能可能在將來的派生類中定義或者在基類的基礎之上進行擴展,系統只能在運行階段才能動態決定該調用哪一個函數,所以實現的是動態的多態性。它體現的是一個縱向的概念,也即在基類和派生類間實現。
31.構造函數和析構函數是否可以被重載,為什么? 答:構造函數可以被重載,析構函數不可以被重載。因為構造函數可以有多個且可以帶參數,而析構函數只能有一個,且不能帶參數。
32.如何定義和實現一個類的成員函數為回調函數? 答:
所謂的回調函數,就是預先在系統對函數進行注冊,讓系統知道這個函數的存在,以后,當某個事件發生時,再調用這個函數對事件進行響應。
定義一個類的成員函數時在該函數名前加CALLBACK即將其定義為回調函數,函數的實現和普通成員函數沒有區別 33.虛函數是怎么實現的? 答:簡單說來使用了虛函數表.34.抽象類不會產生實例,所以不需要有構造函數。錯
35.從一個模板類可以派生新的模板類,也可以派生非模板類。對
36.main 函數執行以前,還會執行什么代碼?
答案:全局對象的構造函數會在main 函數之前執行。
37.當一個類A 中沒有申明任何成員變量與成員函數,這時sizeof(A)的值是多少,如果不是零,請解釋一下編譯器為什么沒有讓它為零。(Autodesk)
答案:肯定不是零。舉個反例,如果是零的話,聲明一個class A[10]對象數組,而每一個對象占用的空間是零,這時就沒辦法區分A[0],A[1]?了。
38.delete與 delete []區別:
delete只會調用一次析構函數,而delete[]會調用每一個成員的析構函數。
39.子類析構時要調用父類的析構函數嗎? 會調用,析構函數調用的次序是先派生類的析構后基類的析構,也就是說在基類的的析構調用的時候,派生類的信息已經全部銷毀了
40.繼承優缺點。
1、類繼承是在編譯時刻靜態定義的,且可直接使用,2、類繼承可以較方便地改變父類的實現。缺點:
1、因為繼承在編譯時刻就定義了,所以無法在運行時刻改變從父類繼承的實現
2、父類通常至少定義了子類的部分行為,父類的任何改變都可能影響子類的行為
3、如果繼承下來的實現不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。這種依賴關系限制了靈活性并最終限制了復用性。
41.解釋堆和棧的區別。
棧區(stack)—
由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。堆:一般由程序員分配釋放,若程序員不釋放,程序結束時可能由OS回收。
42.一個類的構造函數和析構函數什么時候被調用,是否需要手工調用? 答:構造函數在創建類對象的時候被自動調用,析構函數在類對象生命期結束時,由系統自動調用。
43.何時需要預編譯:
總是使用不經常改動的大型代碼體。
程序由多個模塊組成,所有模塊都使用一組標準的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預編譯為一個預編譯頭。44.多態的作用? 主要是兩個:
1.隱藏實現細節,使得代碼能夠模塊化;擴展代碼模塊,實現代碼重用;
2.接口重用:為了類在繼承和派生的時候,保證使用家族中任一類的實例的某一屬性時的正確調用
45.虛擬函數與普通成員函數的區別?內聯函數和構造函數能否為虛擬函數?
答案:區別:虛擬函數有virtual關鍵字,有虛擬指針和虛函數表,虛擬指針就是虛擬函數的接口,而普通成員函數沒有。內聯函數和構造函數不能為虛擬函數。
46.構造函數和析構函數的調用順序? 析構函數為什么要虛擬? 答案:構造函數的調用順序:基類構造函數—對象成員構造函數—派生類構造函數;析構函數的調用順序與構造函數相反。析構函數虛擬是為了防止析構不徹底,造成內存的泄漏。
47.C++中類型為private的成員變量可以由哪些函數訪問? 只可以由本類中的成員函數和友員函數訪問
48.請說出類中private,protect,public三種訪問限制類型的區別
private是私有類型,只有本類中的成員函數訪問;protect是保護型的,本類和繼承類可以訪問;public是公有類型,任何類都可以訪問.49.類中成員變量怎么進行初始化?
可以通過構造函數的初始化列表或構造函數的函數體實現。
50.在什么時候需要使用“常引用”? 如果既要利用引用提高程序的效率,又要保護傳遞給函數的數據不在函數中被改變,就應使用常引用。
51.引用與指針有什么區別?
答、1)引用必須被初始化,指針不必。
2)引用初始化以后不能被改變,指針可以改變所指的對象。3)不存在指向空值的引用,但是存在指向空值的指針。
52.描述實時系統的基本特性
答、在特定時間內完成特定的任務,實時性與可靠性。
54.全局變量和局部變量在內存中是否有區別?如果有,是什么區別? 答、全局變量儲存在靜態數據區,局部變量在棧中。
55.堆棧溢出一般是由什么原因導致的? 答、沒有回收垃圾資源
56.什么函數不能聲明為虛函數? 答 構造函數(constructor)
57..IP地址的編碼分為哪倆部分?
答 IP地址由兩部分組成,網絡號和主機號。
58..不能做switch()的參數類型是: 答、switch的參數不能為實型。
59.如何引用一個已經定義過的全局變量?
答、可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變量,假定你將那個變量寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯
60.對于一個頻繁使用的短小函數,在C語言中應用什么實現,在C++中應用什么實現? 答、c用宏定義,c++用inline
61.C++是不是類型安全的?
答案:不是。兩個不同類型的指針之間可以強制轉換(用reinterpret cast)
62.當一個類A 中沒有生命任何成員變量與成員函數,這時sizeof(A)的值是多少,請解釋一下編譯器為什么沒有讓它為零。
答案:為1。舉個反例,如果是零的話,聲明一個class A[10]對象數組,而每一個對象占用的空間是零,這時就沒辦法區分A[0],A[1]?了。
63.簡述數組與指針的區別?
數組要么在靜態存儲區被創建(如全局數組),要么在棧上被創建。指針可以隨時指向任意類型的內存塊。
(1)修改內容上的區別 char a[] = “hello”;a[0] = ?X?;
char *p = “world”;// 注意p 指向常量字符串
p[0] = ‘X’;// 編譯器不能發現該錯誤,運行時錯誤(2)用運算符sizeof 可以計算出數組的容量(字節數)。sizeof(p),p 為指針得到的是一個指針變量的字節數,而不是p 所指的內存容量。
64.C++函數中值的傳遞方式
有三種方式:值傳遞、指針傳遞、引用傳遞
65.內存的分配方式 分配方式有三種,1、靜態存儲區,是在程序編譯時就已經分配好的,在整個運行期間都存在,如全局變量、常量。
2、棧上分配,函數內的局部變量就是從這分配的,但分配的內存容易有限。
3、堆上分配,也稱動態分配,如我們用new,malloc分配內存,用delete,free來釋放的內存。
66.extern“C”有什么作用? extern “C”是由C++提供的一個連接交換指定符號,用于告訴C++這段代碼是C函數。這是因為C++編譯后庫中函數名會變得很長,與C生成的不一致,造成C++不能直接調用C函數,加上extren “c”后,C++就能直接調用C函數了。
extern “C”主要使用正規DLL函數的引用和導出 和 在C++包含C函數或C頭文件時使用。使用時在前面加上extern “c” 關鍵字即可。
67.用什么函數開啟新進程、線程。答案:
線程:CreateThread/AfxBeginThread等 進程:CreateProcess等
68.SendMessage和PostMessage有什么區別
答案:SendMessage是阻塞的,等消息被處理后,代碼才能走到SendMessage的下一行。PostMessage是非阻塞的,不管消息是否已被處理,代碼馬上走到PostMessage的下一行。
69.CMemoryState主要功能是什么
答案:查看內存使用情況,解決內存泄露問題。
70.26、#include
71.處理器標識#error的目的是什么?
答:編譯時輸出一條錯誤信息,并中止繼續編譯。
72.#if!defined(AFX_…_HADE_H)#define(AFX_…_HADE_H)??
#endif作用?
防止該頭文件被重復引用。
73.在定義一個宏的時候要注意什么?
定義部分的每個形參和整個表達式都必須用括號括起來,以避免不可預料的錯誤發生
74.數組在做函數實參的時候會轉變為什么類型? 數組在做實參時會變成指針類型。
75.系統會自動打開和關閉的3個標準的文件是?(1)標準輸入----鍵盤---stdin(2)標準輸出----顯示器---stdout(3)標準出錯輸出----顯示器---stderr
76..在Win32下 char, int, float, double各占多少位?(1)Char 占用8位(2)Int 占用32位(3)Float 占用32位(4)Double 占用64位
77.strcpy()和memcpy()的區別?
strcpy()和memcpy()都可以用來拷貝字符串,strcpy()拷貝以’ 主站蜘蛛池模板: 久久久久亚洲精品天堂| 99j久久精品久久久久久| 久久精品夜色噜噜亚洲a∨| 免费无码av片在线观看网站| 色吊丝av中文字幕| 香蕉在线精品视频在线| 精品少妇一区二区三区视频| 国产精品区一区二区三在线播放| 免费人成视频x8x8入口app| 国产女主播白浆在线观看| 性xxxx欧美老妇胖老太269| 国产v亚洲v天堂a无码99| 国产亚洲精品久久av| 色偷偷亚洲精品一区二区| 天天躁夜夜躁狠狠躁2021a2| 人妻无二区码区三区免费| 久久久久爽爽爽爽一区老女人| 成年入口无限观看免费完整大片| 日韩亚洲欧美在线com| 亚洲精品午夜一区人人爽| 在线精品亚洲一区二区小说| 国产av高清无亚洲| 看国产一毛片在线看手机看| 青青草国产成人99久久| 国产山东熟女48嗷嗷叫| 野外少妇愉情中文字幕| 热99re久久精品这里都是精品| 伊人99综合精品视频| 自拍日韩亚洲一区在线| 国产国产成年年人免费看片| 亚洲成色www久久网站夜月| 一本加勒比hezyo无码人妻| 特黄做受又硬又粗又大视频小说| 成人亚洲a片v一区二区三区动漫| 久久久噜噜噜久久中文字幕色伊伊| 亚洲国产精品成人久久蜜臀| 久久亚洲精品无码av| 狠狠色色综合网站| 日日摸日日添日日碰9学生露脸| 精品一区二区不卡无码av| 天天爽天天爽天天爽|