文章目錄
- 1. C++基礎
- 1.1 C++特點
- 1.2 說說C語言和C++的區別
- 1.3 說說 C++中 struct 和 class 的區別
- 1.4 include頭文件的順序以及雙引號""和尖括號<>的區別
- 1.5 說說C++結構體和C結構體的區別
- 1.6 導入C函數的關鍵字是什么,C++編譯時和C有什么不同?
- 1.7 C++從代碼到可執行二進制文件的過程
- 1.8 說說 static關鍵字的作用
- 1.9 數組和指針的區別
- 1.10 說說什么是函數指針,如何定義函數指針,有什么使用場景
- 1.11 靜態變量什么時候初始化?
- 1.12 nullptr調用成員函數可以嗎?為什么?
- 1.13 說說什么是野指針,怎么產生的,如何避免
- 1.14 說說靜態局部變量,全局變量,局部變量的特點,以及使用場景
- 1.15 說說內聯函數和宏函數的區別
1. C++基礎
1.1 C++特點
- C++在C語言基礎上引入了面對對象的機制,同時也兼容C語言。
- C++有三大特性(1)封裝。(2)繼承。(3)多態;
- C++語言編寫出的程序結構清晰、易于擴充,程序可讀性好。
- C++生成的代碼質量高,效率高,
- C++更加安全,增加了const常量、引用、四類cast轉換(static_cast、dynamic_cast、const_cast、reinterpret_cast)、智能指針、try—catch等等;
- C++可復用性高,C++引入了模板的概念,標準模板庫STL(Standard Template Library)。
1.2 說說C語言和C++的區別
- C語言是C++的子集,C++可以很好兼容C語言。但是C++又有很多新特性,如引用、智能指針、auto變量等。
- C++是面對對象的編程語言;C語言是面對過程的編程語言。
- C語言有一些不安全的語言特性,如指針使用的潛在危險、強制轉換的不確定性、內存泄露等。而C++對此增加了不少新特性來改善安全性,如const常量、引用、cast轉換、智能指針、try—catch等等;
- C++可復用性高,C++引入了模板的概念,后面在此基礎上,實現了方便開發的標準模板庫STL。
C++的STL庫相對于C語言的函數庫更靈活、更通用。
1.3 說說 C++中 struct 和 class 的區別
- struct 一般用于描述一個數據結構集合,而 class 是對一個對象數據的封裝;
- struct 中默認的訪問控制權限是 public 的,而 class 中默認的訪問控制權限是 private 的。
- 在繼承關系中,struct 默認是公有繼承,而 class 是私有繼承;
- class 關鍵字可以用于定義模板參數,就像 typename,而 struct 不能用于定義模板參數,
1.4 include頭文件的順序以及雙引號""和尖括號<>的區別
- 區別:
(1)尖括號<>的頭文件是系統文件,雙引號""的頭文件是自定義文件。
(2)編譯器預處理階段查找頭文件的路徑不一樣。 - 查找路徑:
(1)使用尖括號<>的頭文件的查找路徑:編譯器設置的頭文件路徑–>系統變量。