c 常見問題之 const

2022-08-31 03:00:13 字數 871 閱讀 7078

const 

預設狀態下const物件僅在檔案內有效,新增extern關鍵字可以在多個檔案共享

const 引用:

可以把引用繫結到const物件上,對常量的引用不能被用作修改它所繫結的物件

const int ci =1024; 

const &r = ci;//正確

r = 3;//錯誤

int &s = ci;//錯誤,可以通過s來修改常量ci 的值,顯然是錯誤的

int i =42;

const int &r1 = i;//正確

int &r1 = 42; //錯誤

const int &r2 = 42;//正確 r2是乙個常量引用

const int &r3 = r1 * 2; //正確

int &r4 = r1 *2;//錯誤

const 指標:

指標式物件而引用不是,允許把指標本事定為常量

int e = 0;

int *const cur = &e; 

從右往左 cur離const最近所以是個常量, const前面有*,所以是常量指標,常量指標指向了乙個int物件

頂層const:

頂層const表示指標本身是個常量,可以表示任意的物件是常量

底層const表示指標所指的物件是個常量

int i =0;

int *const p1 = &i; //頂層const

const int ci = 42; //頂層const

const int *p2 = &ci; //底層p2, 允許改變p2的值

const int &r = ci; //用於宣告引用的const都是底層const

C 常見問題

1.預處理 預處理的主要作用就是對資源進行等價替換,最常見的預處理有 檔案包含 include 條件編譯 if,ifndef,ifdef,endif,undef 布局控制 pragma 巨集替換等 define 等。1.1 標頭檔案中放什麼?標頭檔案一般用於類的定義 extern變數和函式的宣告。由...

C 常見問題

問題描述 解決方式 無法解析的外部符號 public cdecl minidl operator operator void 0operator minidl qeaa xz 該符號在函式 public cdecl minidl denseop denseop void 0denseop minid...

c 常見問題

編譯器總是根據型別來呼叫類成員函式。但是乙個派生類的指標可以安全地轉化為乙個基類的指標。這樣刪除乙個基類的指標的時候,c 不管這個指標指向乙個基類物件還是乙個派生類的對 象,調刪除線格式用的都是基類的析構函式而不是派生類的。如果你依賴於派生類的析構函式的 來釋放資源,而沒有過載析構函式,那麼會有資源...