物聯(lián)網(wǎng)/嵌入式工程師
重磅升級:新增硬件電路設計與實戰(zhàn),讓你軟硬通吃,同級PK無敵!行業(yè)風口、政策傾斜,新晉熱門高薪不內卷!0基礎一站式就業(yè)完整路徑,搶占先發(fā)優(yōu)勢!
C++ 中的 const 千變萬化,之前我們已經學過使用 const 來做一個常量。const 在 C++ 中整體表示的語意是“不變的”,但是 const 申明在不同位置,卻會有不一樣的效果。這一小節(jié),我們來集中學習一下 const。
例如:
const int a = 20;
則表示 a 是一個常量,你不可以在后續(xù)對其進行修改。因為 a 不可修改,所以在創(chuàng)建的時候就要對 a 進行賦值,不對其進行賦值則會報錯。例如,下面的代碼就會報錯
const int a;
const 修飾指針可以分為多種情況:
int aaa = 20; int bbb = 30; const int * constPoint = &aaa; constPoint = &bbb; *constPoint = 80; // 這行代碼會報錯
int aaa = 20; int bbb = 30; int * const constPoint = &aaa; constPoint = &bbb; // 這行代碼會報錯 *constPoint = 80;
int aaa = 20; int bbb = 30; const int * const constPoint = &aaa; constPoint = &bbb; // 這行代碼會報錯 *constPoint = 80; // 這行代碼會報錯
const 修飾函數(shù)參數(shù)和修飾普通函數(shù)是一樣的。但是要注意的時候 const 修飾函數(shù)參數(shù)的時候,其作用域僅僅限制在函數(shù)內部。也就是說,你可以把一個不用 const 修飾的參數(shù)傳入到 const 修飾的參數(shù)中去。而只要在函數(shù)中保持其不變性就可以了。
class A { public: int aaa; int funcA() const { aaa = 20; // 這行代碼會報錯 return 0; } }
class A { public: int aaa; int funcA() const { funcB(); // 這行代碼會報錯 return 0; } int funcB() { return 0; } }
修飾返回值要分成兩種情況
在 C++ 中有時我們會寫這樣的代碼:
A aaa; A & getA(){ return aaa; } int main(int argc,char **argv) { A bbb; getA() = bbb; return 0; }
上面的代碼運行之后,aaa 變量就會被 bbb 所賦值,但是有些時候這樣做會造成一些混亂
例如:
getA() == a
有時候會有筆誤:
getA() = a
這種情況下,就會有問題,而且不容易被找到這個錯誤。
所以在大多數(shù)情況下,我們可以給返回值加一個 const ,這樣可以防止返回值被調用。
A aaa; const A & getA(){ return aaa; } int main(int argc,char **argv) { A bbb; getA() = bbb; // 這行代碼會報錯 return 0; }
值傳遞就簡單多了,因為值傳遞的時候,返回值會被復制一份,所以加不加 const 都可以。
請驗證,完成請求
由于請求次數(shù)過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報