您好,登錄后才能下訂單哦!
這篇文章主要介紹了c++基礎知識有哪些,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
c++基礎知識
C++ 是一種中級語言,它是由 Bjarne Stroustrup 于 1979 年在貝爾實驗室開始設計開發的。C++ 進一步擴充和完善了 C 語言,是一種面向對象的程序設計語言。C++ 可運行于多種平臺上,如 Windows、MAC 操作系統以及 UNIX 的各種版本。C語言是面向過程的語言,C++ 在此基礎上增加了面向對象以及泛型編程機制,因此 C++ 更適合大中型程序的開發。然而,C++ 并沒有犧牲效率,如果不使用高級特性,它的效率和C語言幾乎沒有差異。
1、C++中的基本數據類型有哪些?
答:3種類型:整數型、浮點型、void型。
2、整型有幾種形式,各種形式有什么區別?
答:整型包括整數,字符和布爾值的算術類型,根據修飾符細分為13種形式,其主要區別體現在類型名、長度、表示范圍幾個方面。
3、C++中有哪些常量?
答:6種常量:整型常量、浮點型常量、字符型常量、字符串常量、轉義字符常量、地址常量。
4、常量與變量有哪些區別?
答:(1)常量的值不可改變,變量的值可以改變;(2)常量在定義時必須初始化,變量在定義可以不初始化;(3)常量不可以尋址,其地址只可賦予常量指針,變量可以尋址;(4)常量有較高的編譯執行效率;
5、操作符有哪些分類?
答:(1)按照操作數區分:一元操作符、二元操作符、三元操作符;(2)按照功能區分:算術操作符、關系操作符、邏輯操作符、位操作符、賦值操作符、自增自減操作符、箭頭操作符、條件操作符、sizeof操作符、逗號操作符。
6、自增自減前操作與后操作的區別?
答:前自增自減操作的優先級大于賦值運算符(=),后自增自減操作的優先級小于賦值運算符,后自增自減操作后表達式的值不會發生改變。
7、指針和變量的自增自減有什么不同?
答:變量的自增自減是改變變量的值,指針的自增自減是改變指針的指向地址。
8、什么是左值和右值?
答:變量是左值,可以在賦值語句的左邊;數字字面值是右值,不能被賦值。
9、變量有哪幾種初始化方式?
答:2種:直接初始化;復制初始化。直接初始化更加靈活而且執行效率更高。
10、變量的聲明和定義是什么?
答:變量聲明的主要目的是表明變量的類型和名稱;變量定義的主要目的是分配存儲空間,它們有相同的時候。
11、C++中有哪幾種作用域?
答:3種:全局作用域、局部作用域、語句作用域。
12、變量有哪幾種存儲類型?
答:4種:自動類型、靜態類型、寄存器類型、外部類型。
13、C與C++有什么區別?
答:C語言是結構化的編程語言,它是面向過程的,考慮的是實現過程;C++是面向對象的,考慮的是整個程序模型。
14、宏定義與操作符的區別?
答:宏定義是C++的預處理命令之一,它是一個替換操作,不做計算和表達式求解,不占內存和編譯時間。
15、虛函數與純虛函數的特點?
答:虛函數必須是基類的非靜態成員函數,其訪問權限可以是protected或public;純虛函數是虛函數的一個子集,含有純虛函數的類就是抽象類,它不能生成對象。
16、如何使用純虛函數?
答:純虛函數用來定義沒有意義的實現,用于抽象類中需要交給派生類具體實現的方法。
17、什么是指針?
答:指針是用來存儲內存地址的變量,它指向單個對象的地址,除了void指針類型外,指針的數據類型與所指向地址的變量的數據類型需要保持一致。
18、const對象的指針和const指針的區別?
答:const指針本身的值不可改變,但可以使用該指針修改它所指對象的值;const變量的指針不可以修改所指向的const變量的值,但指針本身可以被重新賦值。
19、數組指針與指針數組的區別?
答:數組指針是一個指針變量,它指向一個數組;指針數組是一個只包含指針元素的數組,它的元素可以指向相同類型的不同對象。
20、什么是函數指針?
答:函數指針就是指向函數的存儲空間地址的指針,可以對函數指針進行賦值并通過函數指針來調用函數。
21、引用與值傳遞的區別?
答:值傳遞傳遞的是一個值的副本,函數對形參的操作不會影響實參的值;引用傳遞傳遞的是引用對象的內存地址,函數對形參的操作會影響實參的值,實參的值會隨著形參的值得改變而改變。
22、指針與引用的區別?
答:(1)引用無需解引用,指針需要解引用;(2)引用在定義時被初始化一次,之后不可變,指針可變;(3)引用不能為空,指針可以為空;(4)程序為指針變量分配內存區域,而引用不需要分配內存區域,所以指針自增操作是指針變量的自增,引用自增操作是變量值的自增。
23、面向對象與面向過程的區別?
答:面向過程是一種以過程為中心的編程思想,以算法進行驅動;面向對象是一種以對象為中心的編程思想,以消息進行驅動。面向過程編程語言的組成:程序=算法+數據;面向對象編程語言的組成:程序=對象+消息。
24、面向對象的特征是什么?
答:面對對象的3個要素:封裝,繼承,多態。面向對象中所有對象都可以歸屬為一個類。
25、類與結構體有什么區別?
答:(1)結構體存儲在棧中,類的實例化可以存儲在棧中,也可以存儲在堆中;(2)結構體的執行效率比類要高;(3)結構體沒有析構函數,類有析構函數;(4)結構體不可以繼承,類可以繼承。
26、如何訪問靜態成員?
答:靜態成員可以通過類名直接調用,不需要創建類的實例,也可以通過類的實例進行調用,但底層仍然是通過類名調用的,所以不推薦這種調用方法。類的靜態方法只能訪問類的靜態成員。
27、什么是多態?
答:多態就是將子類對象賦給父類變量,父類變量在編譯期和運行期表現出不同的特性。
28、在C++中如何實現多態?
答:多態有動態多態、靜態多態、函數多態和宏多態等,我們常說的多態指的是動態多態,它是基于繼承機制和虛函數來實現的。
29、派生類與基類的轉換?
答:派生類總是可以轉換為基類的引用類型;基類轉換為派生類需要在確定安全的情況下使用強制轉換來實現。
30、什么是虛成員,有什么作用?
答:虛函數的作用是實現動態聯編,程序發現虛函數名前的關鍵字virtual后,會自動將其作為動態聯編處理,即在程序運行時動態的選擇合適的成員函數。
31、C++覆蓋與隱藏概述?
答:(1)覆蓋指的是在子類和父類中,存在函數名、參數均相同的函數,并且父類的該函數為虛函數;(2)隱藏指的是在子類與父類中,存在函數名相同、參數不同的函數,此時無論父類函數是否為虛函數,父類函數都會被被隱藏,或者存在函數名、參數均相同的函數,此時只有當父類函數不為虛函數時,父類函數才會被隱藏。
32、什么是深拷貝與淺拷貝?
答:如果一個類擁有資源,當這個類的資源發生復制過程時,就叫做深拷貝;如果對象存在資源但在復制過程中并未復制資源就是淺拷貝。
33、什么是拷貝構造函數,什么時候調用?
答:拷貝構造函數由編譯器調用來完成一些基于同一類的其他對象的構建及初始化。有3種情況會使用拷貝構造函數:(1)一個對象以值傳遞的方式傳入函數體;(2)一個對象以值傳遞的方式從函數返回;(3)一個對象需要通過另外一個對象進行初始化。
34、什么是類型轉換構造函數?
答:一個類的構造函數只有一個參數,該參數類型不為該類類型而是其他類型,這個構造函數就被稱為類型轉換構造函數,它可以用來處理不同域的同一數據值。
35、C++支持參數個數不確定的函數嗎?
答:C++可以通過隱藏參數機制支持參數不確定的函數。
36、什么是內聯函數?
答:在類聲明的內部聲明或定義的成員函數叫做內聯(inline)函數,在內聯函數內不允許有循環語句和switch語句。
37、引用形參與非引用形參的區別?
答:引用形參是將參數變量的地址來進行傳遞,可以通過函數對形參的調用來修改實參的值。
38、使用引用形參有什么問題?
答:調用非const類型的引用形參,實參必須不是const類型,二者類型應當一致;當調用一個有const引用的形參函數時,如果實參不是一個變量或者類型不匹配時,函數會創建一個無名的臨時變量用來存儲實參的值,并把這個形參作為該臨時變量的引用。
39、指針形參和引用形參有什么區別?
答:指針形參是指函數的參數是指針,它不會像引用形參那樣通過函數調用影響實參的值,但是調用后它會修改實參的對象。程序中建議盡量少使用指針形參,這樣會使程序的可讀性下降。
40、什么是靜態函數?如何使用靜態函數?
答:靜態函數是用static修飾符修飾的函數,靜態函數沒有this指針,只能訪問靜態變量。類中如果函數調用的結果不會訪問或者修改任何對象數據成員,這樣的成員聲明為靜態成員函數比較好。
41、函數重載及作用域?
答:函數重載是指在相同作用域下,具有相同名稱而不同參數列表的多個函數。
42、函數重載時如何實現實參的類型轉換?
答:在函數重載匹配時,先通過標準轉換來實現匹配,如果不行,再通過類類型轉換來實現匹配。
43、什么是函數模板?
答:函數模板技術是指使用了模板技術定義了參數化類型的非成員函數,這使得程序能夠使用不同的參數類型調用相同的函數。
44、什么是類模板?
答:類模板是使用模板技術的類,描述了能夠管理其他數據類型的通用數據類型。類模板技術通常用于建立包含其他類型的容器類(隊列、鏈表、堆棧等)。
45、什么是泛型編程?
答:泛型編程就是以獨立于特定類實現的方式編寫代碼,針對不同的類型提供通用的實現。
46、C++如何實現泛型編程?
答:C++中泛型編程的實現是使用C++中的模板技術來實現的,主要是設計函數模板和類模板。
感謝你能夠認真閱讀完這篇文章,希望小編分享c++基礎知識有哪些內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。