生活随笔
收集整理的這篇文章主要介紹了
C++基础(1)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【1】簡述#include<>和#include" "的區別
答:前者直接從編譯器指定的路徑處搜索;
? ? ? ? 后者在程序當前的目錄進行搜索,如果沒有搜索到再從編譯器指定的路徑出搜索。
【2】簡述##與#在define中的作用
答:1.宏定義中#運算符將其后面的參數轉換成字符串
? ? ? ?2.宏定義中##運算符將前后的參數進行字符串替換
?【3】簡述assert斷言的概念
? 答: assert用于在程序中的DEBUG版本中檢測條件表達式,如果結果為假,則輸出診斷信息并終止程序運行。實際上assert是一個帶參數的宏,并非函數。一個良好的編程在調試結束后,在#include語句之前插入#define NDEBUG禁用 assert宏。
【4】簡述i++和++i的區別
? ? i++是先用后加,++i是先加后用。i++的開銷要比++i大,因為i++產生了一個臨時變量。
【5】C++類型轉換
? cout<<static_cast<double>(1)/2<<endl;?
C++中結果為0.5?
cout<<1/2<<endl;
C++中結果為0
所以類型轉換必須顯示聲明,永遠不要依賴隱式類型轉換。
1.static_cast //內置數據類型轉換,具有繼承關系的指針和引用,不進行安全檢查?
2.dynamic_cast //動態類型轉換,轉換具有繼承關系的 嚴格遵循對象類型安全檢查 由下向上的轉換是安全的,由上向下的轉換是不安全不被允許的?
3.const_cast //增加或者解除const限制,不是在本身解除而 是另一個開辟的(指針 引用 對象指針) 有效
4.reinterpret_cast 無關聯類型可以進行強制類型轉換?
?
總結
以上是生活随笔為你收集整理的C++基础(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。