首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ const 關鍵字完全解析:四大修飾語境與指標/引用陷阱

     編輯:C++ 入門

C++ 中 const 用法豐富。若不使用常引用/指標,須用 const_cast<> 轉換。指向 char 的常指標常用於表示字串(如 Windows LPCSTR 即 const char*)。

1. 修飾常量

最基本用法,替代 C 巨集。宣告時必須初始化,類別資料成員在建構函式初始化列表初始化。

const int a = 999;        // 替代巨集
extern const int c;       // 外部定義無需初始化
int const d = 0;          // 與 const int 等價
const long e = 0;         // 同理適用 char、long、類別

2. 修飾引用與指標

對常量的引用/指標必須為常引用/常指標(不可修改所指內容)。否則需 const_cast<> 轉換。const char* 常用於字串字面值(內容不可改)。

const int& g = a;               // a 內容不可改,引用也為 const
int& i = const_cast<int&>(a);  // 移除 const
const int* k = &a;              // 指向常量的指標
int const* l = &a;              // 等價寫法
const char* n = "string";       // 字串字面值不可修改
char* o = "string2";            // 危險:字串字面值實為常量

3. 修飾物件

修飾物件表示其資料成員皆為常量,只能呼叫常成員函式。綜合 1-3:const 表示所修飾記憶體區域被鎖定,不可修改。常引用常用於函式傳參(避免拷貝建構開銷、保護參數不被修改)。

4. const 修飾指標的另一種寫法:const char* vs char* const

  • const char*(或 char const*):常指標,指向內容不可修改,用於字串。
  • char* const:指標本身不可修改(不可指向別處),類似引用。const char* const:指向固定且內容不可修改。

關鍵在 const 相對於 * 的位置:前面修飾指向內容,後面修飾指標本身。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved