《C++ Primer》第 57 頁提出「頂層 const」(top-level const)與「底層 const」(low-level const)的術語,許多初學者困惑:為何不直接用更直觀的名稱?
| 術語 | 含義 | 例子 |
|---|---|---|
| 頂層 const | 指針本身是常量,不可修改指向 | int * const p = &i; |
| 底層 const | 指針所指對象是常量,不可通過指針修改值 | const int *p = &i; 或 int const *p |
| 雙重 const | 兩者兼備 | const int * const p = &i; |
* 的位置。* 右側(更靠近變量名)為頂層,左側(更靠近類型)為底層。const int **p),避免為每種情況造新詞。-Wqualifiers)均使用此術語,便於溝通。*。const → 頂層 const。const → 底層 const。const int *p1; // 底層
int * const p2; // 頂層
const int * const p3; // 頂層 + 底層
const int **p4; // 底層(指向「指向常量整數的指針」的指針)
「頂層/底層」雖然初看抽象,但提供了統一、可擴展的詞彙體系,掌握後能輕鬆應對複雜 const 組合,是 C++ 進階必備內功。