C和C 常見比較和關鍵字

2021-09-09 07:56:32 字數 922 閱讀 2061

const

#define

在編譯執行階段使用

在預處理階段展開

有資料型別

無資料型別

編譯器會進行型別安全檢查

只進行字元替換,並可能產生錯誤

可以進行除錯(有整合化的除錯工具)

不能除錯

在記憶體中分配

僅僅是展開

可以建立class專屬常量。提供封裝性

無法建立class專屬常量,一旦巨集被定義,就在其後得編譯過程中有效(除非被#undef。即不能提供封裝性)

指標引用

是乙個儲存著位址的變數

指向物件的乙個別名

可以在任何時候被初始化

建立時必須被初始化

可以為null

不能有null引用

可以隨時改變所指的物件

不能改變引用的關係

需要分配記憶體空間

不需要分配記憶體空間

malloc/free

new/delete

標準庫函式

運算子malloc申請空間不會初始化

new申請空間會初始化

malloc返回值為void*型別

new返回值為空間的型別

malloc申請失敗後返回null

new申請失敗會捕獲異常

申請自定義物件不會呼叫構造和析構函式

會呼叫構造和析構函式

效率高效率略低(底層封裝了malloc/free)

隱藏保持永續性

預設初始化為0 優點

缺點返回值

和系統api一致

不能方便的使用計算結果

全域性變數

能方便地使用計算結果

可能會忘記檢查全域性變數

異常可以為不同的出錯原因定義不同異常型別,邏輯清晰

有些語言不支援異常,拋異常對效能有負面影響

C 關鍵字this和base比較

關於使用到了兩個c 關鍵字this和base。1,c this keyword 其作用引用類的當前例項,其實看了下面這個例子就好理解了。this不能用於靜態方法中.比如main 主要三個作用 當前例項 引數傳遞和索引器 1.1 當前例項 class team 在這裡因為是要將引數的name值傳入te...

C和C 的關鍵字

關鍵字 含義auto 宣告自動變數 break 跳出當前迴圈 case 開關語句分支 char 宣告字元型變數或函式返回值型別 const 宣告唯讀變數 continue 結束當前迴圈,開始下一輪迴圈 default 開關語句中的 預設 分支 do迴圈語句的迴圈體 double 宣告雙精度浮點型變數...

C 中as和is關鍵字

一.as 運算子用於在相容的引用型別之間執行某些型別的轉換。例如 static void main string args else console.readline 結果 not a string hello not a string class base class derived base c...