1 new/delete和malloc/free區(qū)別二者都是用于分配控件和釋放空間的。new/free是c++中支持的,后者是C語言中支持的,還需要頭文件。new/free在使用的時(shí)候需要?jiǎng)?chuàng)建構(gòu)造函數(shù)和析構(gòu)函數(shù),后者不需要。new/free能夠自動(dòng)計(jì)算所需要分配的內(nèi)存空間,后者不可以。new/free返回相應(yīng)類型的指針,后者返回的是void型指針,還需要一步強(qiáng)制轉(zhuǎn)換。內(nèi)存泄漏:資源申請(qǐng)后需要釋放,否則會(huì)出現(xiàn)內(nèi)存泄漏,內(nèi)存的浪費(fèi)2 符號(hào)起始區(qū)塊、數(shù)據(jù)段(全局變量存放的地方)、代碼段、堆、棧3 #include和#include "filename.h"
前者首先從標(biāo)準(zhǔn)庫路徑開始搜索,然后搜索本地。后者直接從用戶的工作路徑開始,然后搜索系統(tǒng)路徑。
4 typedef和define區(qū)別
都是替一個(gè)對(duì)象取一個(gè)別名
原理不同,前者是在編譯階段進(jìn)行,會(huì)做類型檢查。而后者在預(yù)處理階段,不做類型檢查。前者用來定義類型的而別名,這些類型不只包含內(nèi)部類型
5 struct和union區(qū)別
后者中所有成員共用一塊內(nèi)存區(qū),前者中所有成員的空間是累加的。聯(lián)合體中不同成員的賦值會(huì)造成覆蓋。
6 c語言和c++中struct的區(qū)別
前者中的struct沒有函數(shù)成員、沒有訪問權(quán)限的設(shè)定,struct之間沒有繼承關(guān)系。
7 重載和覆蓋
重載:函數(shù)不同的參數(shù)表,對(duì)同名參數(shù)做修飾,然后這些同名參數(shù)就成了不同的函數(shù)
覆蓋:派生類中存在重新定義基類的函數(shù),函數(shù)名、參數(shù)類型、返回值必須同父類中相對(duì)應(yīng)的被覆蓋函數(shù)一致
8 變量分布的地方
全局變量、靜態(tài)局部變量、靜態(tài)全局變量:靜態(tài)存儲(chǔ)區(qū)
局部變量:棧
全局變量和靜態(tài)變量異同點(diǎn):二者都分布在靜態(tài)存儲(chǔ)區(qū),生命周期和程序生命周期相同,不同在全局變量作用域是全局,靜態(tài)變量具有穩(wěn)健的作用域。
9 編譯和鏈接的區(qū)別
編譯:預(yù)處理、詞法分析、語法分析、語義分析、優(yōu)化編譯生成若干個(gè)目標(biāo)模塊,將高級(jí)語言翻譯成二進(jìn)制代碼,即機(jī)器語言
鏈接;鏈接程序?qū)⒕幾g后形成的一組目標(biāo)模塊以及它們所需要的庫函數(shù)鏈接在一起,形成一個(gè)完成的載入模型。在鏈接的時(shí)候,需要重定位一些符號(hào)。
載入:由載入程序?qū)⑤d入模塊載入內(nèi)存
10 面向?qū)ο螅嫦蜻^程
面向?qū)ο螅喊褦?shù)據(jù)和數(shù)據(jù)操作放在一起作為一個(gè)相互依存的整體,即對(duì)象。對(duì)同類對(duì)象抽象出共性,即類。
面向過程:是一種以事件為中心的開發(fā)方法,自頂向下,逐步求精。模塊化的思想,每個(gè)模塊相對(duì)獨(dú)立,每一模塊內(nèi)部由順序、選擇、循環(huán)三個(gè)部分組成。
區(qū)別
出發(fā)點(diǎn)不同:前者按照常規(guī)化的思維方式來思考世界,把問題域映射到對(duì)象及對(duì)象的接口上。后者強(qiáng)調(diào)過程的抽象化和模塊化。
層次邏輯不同:前者是類的繼承和發(fā)展,后者是模塊的層次結(jié)構(gòu)
處理方式和控制方式:前者是事件驅(qū)動(dòng),后者是通過程序處理數(shù)據(jù)。
11 面向?qū)ο蠡咎卣?/p>
封裝、繼承、多態(tài)
封裝:將客觀事物抽象成類。
繼承:可以使用現(xiàn)有類的所有功能,不需要重新編寫原來的類。實(shí)現(xiàn)代碼的復(fù)用和支持多態(tài)。
多態(tài):一個(gè)實(shí)體同時(shí)具有多種形式。在繼承中,將父對(duì)象設(shè)置成為和一個(gè)或更多它的子對(duì)象相等,賦值以后,父對(duì)象就可以根據(jù)當(dāng)前復(fù)制給它的子對(duì)象的特性以不同的方式運(yùn)作。條件:要有繼承,子類要有對(duì)父類的重寫,父類引用指向子類的對(duì)象。
12 深拷貝和淺拷貝
它們的區(qū)別在于如果數(shù)據(jù)域是指針域的話,深拷貝不僅創(chuàng)建一個(gè)指針,而且分配了一塊新的內(nèi)存。淺拷貝只是創(chuàng)建一個(gè)指針使其指向原本的區(qū)域。
13 友元函數(shù)、友元類
可以訪問類的私有成員
14 基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)不能被派生類繼承,子類需要聲明。
java中final類不能被繼承
15 空類默認(rèn)產(chǎn)生成員函數(shù):默認(rèn)構(gòu)造函數(shù)、復(fù)制構(gòu)造函數(shù)、析構(gòu)函數(shù)、賦值運(yùn)算符重載函數(shù)、取址云算法重載函數(shù)