溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

c++基礎(chǔ)知識(shí)有哪些

發(fā)布時(shí)間:2020-10-23 17:20:50 來(lái)源:億速云 閱讀:215 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了c++基礎(chǔ)知識(shí)有哪些,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

c++基礎(chǔ)知識(shí)

C++ 是一種中級(jí)語(yǔ)言,它是由 Bjarne Stroustrup 于 1979 年在貝爾實(shí)驗(yàn)室開(kāi)始設(shè)計(jì)開(kāi)發(fā)的。C++ 進(jìn)一步擴(kuò)充和完善了 C 語(yǔ)言,是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。C++ 可運(yùn)行于多種平臺(tái)上,如 Windows、MAC 操作系統(tǒng)以及 UNIX 的各種版本。C語(yǔ)言是面向過(guò)程的語(yǔ)言,C++ 在此基礎(chǔ)上增加了面向?qū)ο笠约胺盒途幊虣C(jī)制,因此 C++ 更適合大中型程序的開(kāi)發(fā)。然而,C++ 并沒(méi)有犧牲效率,如果不使用高級(jí)特性,它的效率和C語(yǔ)言幾乎沒(méi)有差異。

1、C++中的基本數(shù)據(jù)類型有哪些?

答:3種類型:整數(shù)型、浮點(diǎn)型、void型。

2、整型有幾種形式,各種形式有什么區(qū)別?

答:整型包括整數(shù),字符和布爾值的算術(shù)類型,根據(jù)修飾符細(xì)分為13種形式,其主要區(qū)別體現(xiàn)在類型名、長(zhǎng)度、表示范圍幾個(gè)方面。

3、C++中有哪些常量?

答:6種常量:整型常量、浮點(diǎn)型常量、字符型常量、字符串常量、轉(zhuǎn)義字符常量、地址常量。

4、常量與變量有哪些區(qū)別?

答:(1)常量的值不可改變,變量的值可以改變;(2)常量在定義時(shí)必須初始化,變量在定義可以不初始化;(3)常量不可以尋址,其地址只可賦予常量指針,變量可以尋址;(4)常量有較高的編譯執(zhí)行效率;

5、操作符有哪些分類?

答:(1)按照操作數(shù)區(qū)分:一元操作符、二元操作符、三元操作符;(2)按照功能區(qū)分:算術(shù)操作符、關(guān)系操作符、邏輯操作符、位操作符、賦值操作符、自增自減操作符、箭頭操作符、條件操作符、sizeof操作符、逗號(hào)操作符。

6、自增自減前操作與后操作的區(qū)別?

答:前自增自減操作的優(yōu)先級(jí)大于賦值運(yùn)算符(=),后自增自減操作的優(yōu)先級(jí)小于賦值運(yùn)算符,后自增自減操作后表達(dá)式的值不會(huì)發(fā)生改變。

7、指針和變量的自增自減有什么不同?

答:變量的自增自減是改變變量的值,指針的自增自減是改變指針的指向地址。

8、什么是左值和右值?

答:變量是左值,可以在賦值語(yǔ)句的左邊;數(shù)字字面值是右值,不能被賦值。

9、變量有哪幾種初始化方式?

答:2種:直接初始化;復(fù)制初始化。直接初始化更加靈活而且執(zhí)行效率更高。

10、變量的聲明和定義是什么?

答:變量聲明的主要目的是表明變量的類型和名稱;變量定義的主要目的是分配存儲(chǔ)空間,它們有相同的時(shí)候。

11、C++中有哪幾種作用域?

答:3種:全局作用域、局部作用域、語(yǔ)句作用域。

12、變量有哪幾種存儲(chǔ)類型?

答:4種:自動(dòng)類型、靜態(tài)類型、寄存器類型、外部類型。

13、C與C++有什么區(qū)別?

答:C語(yǔ)言是結(jié)構(gòu)化的編程語(yǔ)言,它是面向過(guò)程的,考慮的是實(shí)現(xiàn)過(guò)程;C++是面向?qū)ο蟮?,考慮的是整個(gè)程序模型。

14、宏定義與操作符的區(qū)別?

答:宏定義是C++的預(yù)處理命令之一,它是一個(gè)替換操作,不做計(jì)算和表達(dá)式求解,不占內(nèi)存和編譯時(shí)間。

15、虛函數(shù)與純虛函數(shù)的特點(diǎn)?

答:虛函數(shù)必須是基類的非靜態(tài)成員函數(shù),其訪問(wèn)權(quán)限可以是protected或public;純虛函數(shù)是虛函數(shù)的一個(gè)子集,含有純虛函數(shù)的類就是抽象類,它不能生成對(duì)象。

16、如何使用純虛函數(shù)?

答:純虛函數(shù)用來(lái)定義沒(méi)有意義的實(shí)現(xiàn),用于抽象類中需要交給派生類具體實(shí)現(xiàn)的方法。

17、什么是指針?

答:指針是用來(lái)存儲(chǔ)內(nèi)存地址的變量,它指向單個(gè)對(duì)象的地址,除了void指針類型外,指針的數(shù)據(jù)類型與所指向地址的變量的數(shù)據(jù)類型需要保持一致。

18、const對(duì)象的指針和const指針的區(qū)別?

答:const指針本身的值不可改變,但可以使用該指針修改它所指對(duì)象的值;const變量的指針不可以修改所指向的const變量的值,但指針本身可以被重新賦值。

19、數(shù)組指針與指針數(shù)組的區(qū)別?

答:數(shù)組指針是一個(gè)指針變量,它指向一個(gè)數(shù)組;指針數(shù)組是一個(gè)只包含指針元素的數(shù)組,它的元素可以指向相同類型的不同對(duì)象。

20、什么是函數(shù)指針?

答:函數(shù)指針就是指向函數(shù)的存儲(chǔ)空間地址的指針,可以對(duì)函數(shù)指針進(jìn)行賦值并通過(guò)函數(shù)指針來(lái)調(diào)用函數(shù)。

21、引用與值傳遞的區(qū)別?

答:值傳遞傳遞的是一個(gè)值的副本,函數(shù)對(duì)形參的操作不會(huì)影響實(shí)參的值;引用傳遞傳遞的是引用對(duì)象的內(nèi)存地址,函數(shù)對(duì)形參的操作會(huì)影響實(shí)參的值,實(shí)參的值會(huì)隨著形參的值得改變而改變。

22、指針與引用的區(qū)別?

答:(1)引用無(wú)需解引用,指針需要解引用;(2)引用在定義時(shí)被初始化一次,之后不可變,指針可變;(3)引用不能為空,指針可以為空;(4)程序?yàn)橹羔樧兞糠峙鋬?nèi)存區(qū)域,而引用不需要分配內(nèi)存區(qū)域,所以指針自增操作是指針變量的自增,引用自增操作是變量值的自增。

23、面向?qū)ο笈c面向過(guò)程的區(qū)別?

答:面向過(guò)程是一種以過(guò)程為中心的編程思想,以算法進(jìn)行驅(qū)動(dòng);面向?qū)ο笫且环N以對(duì)象為中心的編程思想,以消息進(jìn)行驅(qū)動(dòng)。面向過(guò)程編程語(yǔ)言的組成:程序=算法+數(shù)據(jù);面向?qū)ο缶幊陶Z(yǔ)言的組成:程序=對(duì)象+消息。

24、面向?qū)ο蟮奶卣魇鞘裁矗?/strong>

答:面對(duì)對(duì)象的3個(gè)要素:封裝,繼承,多態(tài)。面向?qū)ο笾兴袑?duì)象都可以歸屬為一個(gè)類。

25、類與結(jié)構(gòu)體有什么區(qū)別?

答:(1)結(jié)構(gòu)體存儲(chǔ)在棧中,類的實(shí)例化可以存儲(chǔ)在棧中,也可以存儲(chǔ)在堆中;(2)結(jié)構(gòu)體的執(zhí)行效率比類要高;(3)結(jié)構(gòu)體沒(méi)有析構(gòu)函數(shù),類有析構(gòu)函數(shù);(4)結(jié)構(gòu)體不可以繼承,類可以繼承。

26、如何訪問(wèn)靜態(tài)成員?

答:靜態(tài)成員可以通過(guò)類名直接調(diào)用,不需要?jiǎng)?chuàng)建類的實(shí)例,也可以通過(guò)類的實(shí)例進(jìn)行調(diào)用,但底層仍然是通過(guò)類名調(diào)用的,所以不推薦這種調(diào)用方法。類的靜態(tài)方法只能訪問(wèn)類的靜態(tài)成員。

27、什么是多態(tài)?

答:多態(tài)就是將子類對(duì)象賦給父類變量,父類變量在編譯期和運(yùn)行期表現(xiàn)出不同的特性。

28、在C++中如何實(shí)現(xiàn)多態(tài)?

答:多態(tài)有動(dòng)態(tài)多態(tài)、靜態(tài)多態(tài)、函數(shù)多態(tài)和宏多態(tài)等,我們常說(shuō)的多態(tài)指的是動(dòng)態(tài)多態(tài),它是基于繼承機(jī)制和虛函數(shù)來(lái)實(shí)現(xiàn)的。

29、派生類與基類的轉(zhuǎn)換?

答:派生類總是可以轉(zhuǎn)換為基類的引用類型;基類轉(zhuǎn)換為派生類需要在確定安全的情況下使用強(qiáng)制轉(zhuǎn)換來(lái)實(shí)現(xiàn)。

30、什么是虛成員,有什么作用?

答:虛函數(shù)的作用是實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編,程序發(fā)現(xiàn)虛函數(shù)名前的關(guān)鍵字virtual后,會(huì)自動(dòng)將其作為動(dòng)態(tài)聯(lián)編處理,即在程序運(yùn)行時(shí)動(dòng)態(tài)的選擇合適的成員函數(shù)。

31、C++覆蓋與隱藏概述?

答:(1)覆蓋指的是在子類和父類中,存在函數(shù)名、參數(shù)均相同的函數(shù),并且父類的該函數(shù)為虛函數(shù);(2)隱藏指的是在子類與父類中,存在函數(shù)名相同、參數(shù)不同的函數(shù),此時(shí)無(wú)論父類函數(shù)是否為虛函數(shù),父類函數(shù)都會(huì)被被隱藏,或者存在函數(shù)名、參數(shù)均相同的函數(shù),此時(shí)只有當(dāng)父類函數(shù)不為虛函數(shù)時(shí),父類函數(shù)才會(huì)被隱藏。

32、什么是深拷貝與淺拷貝?

答:如果一個(gè)類擁有資源,當(dāng)這個(gè)類的資源發(fā)生復(fù)制過(guò)程時(shí),就叫做深拷貝;如果對(duì)象存在資源但在復(fù)制過(guò)程中并未復(fù)制資源就是淺拷貝。

33、什么是拷貝構(gòu)造函數(shù),什么時(shí)候調(diào)用?

答:拷貝構(gòu)造函數(shù)由編譯器調(diào)用來(lái)完成一些基于同一類的其他對(duì)象的構(gòu)建及初始化。有3種情況會(huì)使用拷貝構(gòu)造函數(shù):(1)一個(gè)對(duì)象以值傳遞的方式傳入函數(shù)體;(2)一個(gè)對(duì)象以值傳遞的方式從函數(shù)返回;(3)一個(gè)對(duì)象需要通過(guò)另外一個(gè)對(duì)象進(jìn)行初始化。

34、什么是類型轉(zhuǎn)換構(gòu)造函數(shù)?

答:一個(gè)類的構(gòu)造函數(shù)只有一個(gè)參數(shù),該參數(shù)類型不為該類類型而是其他類型,這個(gè)構(gòu)造函數(shù)就被稱為類型轉(zhuǎn)換構(gòu)造函數(shù),它可以用來(lái)處理不同域的同一數(shù)據(jù)值。

35、C++支持參數(shù)個(gè)數(shù)不確定的函數(shù)嗎?

答:C++可以通過(guò)隱藏參數(shù)機(jī)制支持參數(shù)不確定的函數(shù)。

36、什么是內(nèi)聯(lián)函數(shù)?

答:在類聲明的內(nèi)部聲明或定義的成員函數(shù)叫做內(nèi)聯(lián)(inline)函數(shù),在內(nèi)聯(lián)函數(shù)內(nèi)不允許有循環(huán)語(yǔ)句和switch語(yǔ)句。

37、引用形參與非引用形參的區(qū)別?

答:引用形參是將參數(shù)變量的地址來(lái)進(jìn)行傳遞,可以通過(guò)函數(shù)對(duì)形參的調(diào)用來(lái)修改實(shí)參的值。

38、使用引用形參有什么問(wèn)題?

答:調(diào)用非const類型的引用形參,實(shí)參必須不是const類型,二者類型應(yīng)當(dāng)一致;當(dāng)調(diào)用一個(gè)有const引用的形參函數(shù)時(shí),如果實(shí)參不是一個(gè)變量或者類型不匹配時(shí),函數(shù)會(huì)創(chuàng)建一個(gè)無(wú)名的臨時(shí)變量用來(lái)存儲(chǔ)實(shí)參的值,并把這個(gè)形參作為該臨時(shí)變量的引用。

39、指針形參和引用形參有什么區(qū)別?

答:指針形參是指函數(shù)的參數(shù)是指針,它不會(huì)像引用形參那樣通過(guò)函數(shù)調(diào)用影響實(shí)參的值,但是調(diào)用后它會(huì)修改實(shí)參的對(duì)象。程序中建議盡量少使用指針形參,這樣會(huì)使程序的可讀性下降。

40、什么是靜態(tài)函數(shù)?如何使用靜態(tài)函數(shù)?

答:靜態(tài)函數(shù)是用static修飾符修飾的函數(shù),靜態(tài)函數(shù)沒(méi)有this指針,只能訪問(wèn)靜態(tài)變量。類中如果函數(shù)調(diào)用的結(jié)果不會(huì)訪問(wèn)或者修改任何對(duì)象數(shù)據(jù)成員,這樣的成員聲明為靜態(tài)成員函數(shù)比較好。

41、函數(shù)重載及作用域?

答:函數(shù)重載是指在相同作用域下,具有相同名稱而不同參數(shù)列表的多個(gè)函數(shù)。

42、函數(shù)重載時(shí)如何實(shí)現(xiàn)實(shí)參的類型轉(zhuǎn)換?

答:在函數(shù)重載匹配時(shí),先通過(guò)標(biāo)準(zhǔn)轉(zhuǎn)換來(lái)實(shí)現(xiàn)匹配,如果不行,再通過(guò)類類型轉(zhuǎn)換來(lái)實(shí)現(xiàn)匹配。

43、什么是函數(shù)模板?

答:函數(shù)模板技術(shù)是指使用了模板技術(shù)定義了參數(shù)化類型的非成員函數(shù),這使得程序能夠使用不同的參數(shù)類型調(diào)用相同的函數(shù)。

44、什么是類模板?

答:類模板是使用模板技術(shù)的類,描述了能夠管理其他數(shù)據(jù)類型的通用數(shù)據(jù)類型。類模板技術(shù)通常用于建立包含其他類型的容器類(隊(duì)列、鏈表、堆棧等)。

45、什么是泛型編程?

答:泛型編程就是以獨(dú)立于特定類實(shí)現(xiàn)的方式編寫代碼,針對(duì)不同的類型提供通用的實(shí)現(xiàn)。

46、C++如何實(shí)現(xiàn)泛型編程?

答:C++中泛型編程的實(shí)現(xiàn)是使用C++中的模板技術(shù)來(lái)實(shí)現(xiàn)的,主要是設(shè)計(jì)函數(shù)模板和類模板。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享c++基礎(chǔ)知識(shí)有哪些內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問(wèn)題就找億速云,詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI