精品国产高清不卡毛片,亚洲综合色一区二区三区小说,日日夜夜天天久久,久久受www免费人成_看片中文,色噜噜狠狠一区二区

c 面試題(C 開(kāi)發(fā)人員面試問(wèn)題)

大家好,我是檸檬哥,專(zhuān)注編程知識分享。

歡迎關(guān)注@程序員檸檬橙,編程路上不迷路,私信發(fā)送以下關(guān)鍵字獲取編程資源:

發(fā)送1024打包下載10個(gè)G編程資源學(xué)習資料

發(fā)送001獲取阿里大神LeetCode 刷題筆記

發(fā)送002獲取獲取谷歌公司編程代碼規范

發(fā)送003獲取10個(gè)精美簡(jiǎn)歷模板PDF和Word版

發(fā)送004獲取100道精選 C 面試題和答案word版

發(fā)送005獲取獲取谷歌LeetCode算法筆記

今天給大家分享一些經(jīng)典的C 面試題。

1.new、delete、malloc、free之間的關(guān)系

malloc 和 free 都是 C/C 語(yǔ)言的標準庫函數,new/delete 是 C 的運算符。

new 調用構造函數,delete 會(huì )調用對象的析構函數,而 free 只會(huì )釋放內存。

它們都可用于申請動(dòng)態(tài)內存和釋放內存。但對于非內部數據類(lèi)型的對象而言,光用 malloc/free 無(wú)法滿(mǎn)足動(dòng)態(tài)對象的要求。對象在創(chuàng )建的同時(shí)要自動(dòng)執行構造函數,對象在消亡之前要自動(dòng)執行析構函數。由于 malloc/free 是庫函數而不是運算符,不在編譯器控制權限之內,不能夠把執行構造函數和析構函數的任務(wù)強加給 malloc/free。因此C 語(yǔ)言需要一個(gè)能完成動(dòng)態(tài)內存分配和初始化工作的運算符new,以及一個(gè)能完成清理與釋放內存工作的運算符 delete。注意:new/delete 不是庫函數。

2.delete和delete []的區別

delete 只會(huì )調用一次析構函數,而 delete[] 會(huì )調用每一個(gè)成員函數的析構函數。

在 More Effective C 中有更為詳細的解釋?zhuān)寒?delete 操作符用于數組時(shí),它為每個(gè)數組元素調用析構函數,然后調用 operator delete 來(lái)釋放內存。delete 與 new 配套,delete [] 與 new [] 配套

MemTest *mTest1=newMemTest[10];

MemTest *mTest2=newMemTest;

Int *pInt1=newint[10];

Int *pInt2=newint;delete[]pInt1;//-1-delete[]pInt2;//-2-delete[]mTest1;//-3-delete[]mTest2;//-4-

在 -4- 處報錯。

這就說(shuō)明:對于內建簡(jiǎn)單數據類(lèi)型,delete和delete[]功能是相同的。對于自定義的復雜數據類(lèi)型,delete和delete[]不能互用。delete[]刪除一個(gè)數組,delete刪除一個(gè)指針。簡(jiǎn)單來(lái)說(shuō),用new分配的內存用delete刪除;用new[]分配的內存用delete[]刪除。delete[]會(huì )調用數組元素的析構函數。內部數據類(lèi)型沒(méi)有析構函數,所以問(wèn)題不大。如果你在用delete時(shí)沒(méi)用括號,delete就會(huì )認為指向的是單個(gè)對象,否則,它就會(huì )認為指向的是一個(gè)數組。

3.C 有哪些性質(zhì)(面向對象特點(diǎn))

封裝、繼承和多態(tài)

4.子類(lèi)析構時(shí)要調用父類(lèi)的析構函數嗎?

析構函數調用的次序是先派生類(lèi)的析構后基類(lèi)的析構,也就是說(shuō)在基類(lèi)的的析構調用的時(shí)候,派生類(lèi)的信息已經(jīng)全部銷(xiāo)毀了。定義一個(gè)對象時(shí)先調用基類(lèi)的構造函數、然后調用派生類(lèi)的構造函數;析構的時(shí)候恰好相反:先調用派生類(lèi)的析構函數、然后調用基類(lèi)的析構函數。

5.介紹多態(tài)、虛函數和純虛函數。

多態(tài):是對于不同對象接收相同消息時(shí)產(chǎn)生不同的動(dòng)作。C 的多態(tài)性具體體現在運行和編譯兩個(gè)方面:在程序運行時(shí)的多態(tài)性通過(guò)繼承和虛函數來(lái)體現;在程序編譯時(shí)多態(tài)性體現在函數和運算符的重載上;

虛函數:在基類(lèi)中冠以關(guān)鍵字 virtual 的成員函數。它提供了一種接口界面。允許在派生類(lèi)中對基類(lèi)的虛函數重新定義。

純虛函數的作用:在基類(lèi)中為其派生類(lèi)保留一個(gè)函數的名字,以便派生類(lèi)根據需要對它進(jìn)行定義。作為接口而存在的純虛函數不具備函數的功能,一般不能直接被調用。

從基類(lèi)繼承來(lái)的純虛函數,在派生類(lèi)中仍是虛函數。如果一個(gè)類(lèi)中至少有一個(gè)純虛函數,那么這個(gè)類(lèi)被稱(chēng)為抽象類(lèi)(abstract class)。

抽象類(lèi)中不僅包括純虛函數,也可包括虛函數。抽象類(lèi)是必須用作派生其他類(lèi)的基類(lèi),而不能用于直接創(chuàng )建對象實(shí)例。但仍可使用指向抽象類(lèi)的指針支持運行時(shí)多態(tài)性。

注:

定義一個(gè)函數為虛函數,不代表函數為不被實(shí)現的函數。定義他為虛函數是為了允許用基類(lèi)的指針來(lái)調用子類(lèi)的這個(gè)函數。定義一個(gè)函數為純虛函數,才代表函數沒(méi)有被實(shí)現。

6.求下面函數的返回值(微軟)

intfunc(x){intcountx =0;
while(x)
{
countx ;
x = x

上一篇:

下一篇:

? 推薦閱讀

分享
精品国产高清不卡毛片,亚洲综合色一区二区三区小说,日日夜夜天天久久,久久受www免费人成_看片中文,色噜噜狠狠一区二区