經(jīng)典常用C++面試題
1.介紹一下STL,詳細(xì)說明STL如何實(shí)現(xiàn)vector,
經(jīng)典常用C++面試題
。STL (標(biāo)準(zhǔn)模版庫,Standard Template Library)它由容器算法迭代器組成。
STL有以下的一些優(yōu)點(diǎn):
可以方便容易地實(shí)現(xiàn)搜索數(shù)據(jù)或?qū)?shù)據(jù)排序等一系列的算法;
調(diào)試程序時(shí)更加安全和方便;
即使是人們用STL在UNIX平臺下寫的代碼你也可以很容易地理解(因?yàn)镾TL是跨平臺的)。
vector實(shí)質(zhì)上就是一個(gè)動(dòng)態(tài)數(shù)組,會根據(jù)數(shù)據(jù)的增加,動(dòng)態(tài)的增加數(shù)組空間。
2.如果用VC開發(fā)程序,常見這么幾個(gè)錯(cuò)誤,C2001,c2005,c2011,這些錯(cuò)誤的原因是什么。
在學(xué)習(xí)VC++的`過程中,遇到的LNK2001錯(cuò)誤的錯(cuò)誤消息主要為:
unresolved external symbol “symbol”(不確定的外部“符號”)。
如果連接程序不能在所有的庫和目標(biāo)文件內(nèi)找到所引用的函數(shù)、變量或標(biāo)簽,將產(chǎn)生此錯(cuò)誤消息。
一般來說,發(fā)生錯(cuò)誤的原因有兩個(gè):一是所引用的函數(shù)、變量不存在、拼寫不正確或者使用錯(cuò)誤;其次可能使用了不同版本的連接庫,
資料共享平臺
《經(jīng)典常用C++面試題》(http://www.stanzs.com)。編程中經(jīng)常能遇到LNK2005錯(cuò)誤——重復(fù)定義錯(cuò)誤,其實(shí)LNK2005錯(cuò)誤并不是一個(gè)很難解決的錯(cuò)誤.
3.繼承和委派有什么分別,在決定使用繼承或者委派的時(shí)候需要考慮什么。
在OOD,OOP中,組合優(yōu)于繼承.
當(dāng)然多態(tài)的基礎(chǔ)是繼承,沒有繼承多態(tài)無從談起。
當(dāng)對象的類型不影響類中函數(shù)的行為時(shí),就要使用模板來生成這樣一組類。
當(dāng)對象的類型影響類中函數(shù)的行為時(shí),就要使用繼承來得到這樣一組類.
4.指針和引用有什么分別;如果傳引用比傳指針安全,為什么?如果我使用常量指針難道不行嗎?
(1) 引用在創(chuàng)建的同時(shí)必須初始化,即引用到一個(gè)有效的對象;而指針在定義的時(shí)候不必初始化,可以在定義后面的任何地方重新賦值.
(2) 不存在NULL引用,引用必須與合法的存儲單元關(guān)聯(lián);而指針則可以是NULL.
(3) 引用一旦被初始化為指向一個(gè)對象,它就不能被改變?yōu)榱硪粋(gè)對象的引用;而指針在任何時(shí)候都可以改變?yōu)橹赶蛄硪粋(gè)對象.給引用賦值并不是改變它和原始對象的綁定關(guān)系.
(4) 引用的創(chuàng)建和銷毀并不會調(diào)用類的拷貝構(gòu)造函數(shù)
(5) 語言層面,引用的用法和對象一樣;在二進(jìn)制層面,引用一般都是通過指針來實(shí)現(xiàn)的,只不過編譯器幫我們完成了轉(zhuǎn)換.
不存在空引用,并且引用一旦被初始化為指向一個(gè)對象,它就不能被改變?yōu)榱硪粋(gè)對象的引用,顯得很安全。
const 指針仍然存在空指針,并且有可能產(chǎn)生野指針.
【經(jīng)典常用C++面試題】相關(guān)文章:
1.C++面試題