在 C++ 中使用帶有指標的 const 關鍵字

Jinku Hu 2023年10月12日
  1. 使用 const 關鍵字表示 C++ 中的不可變物件
  2. 在 C++ 指標型別中使用 const 關鍵字
在 C++ 中使用帶有指標的 const 關鍵字

本文將向你展示如何在 C++ 中使用帶有指標的 const 關鍵字的方法。

使用 const 關鍵字表示 C++ 中的不可變物件

通常,const 關鍵字用於指定給定的物件在整個程式執行過程中是不可變的。與直接指定字面值相比,命名常量值的做法有助於保持程式碼庫的可調整性和易於維護性。此外,函式介面高度利用 const 關鍵字來指示給定的引數是隻讀的,並有助於將執行時錯誤減少到編譯時錯誤。

我們通過在型別說明符之前包含關鍵字來宣告一個 const 物件,如下面的程式碼片段所示。在這裡,你將觀察到 s1 變數被建立為只讀 string,並且 const 物件不能被分配不同的值。因此,它們必須在宣告期間進行初始化。如果我們嘗試修改 const 物件,則會丟擲編譯器錯誤。

#include <iostream>

using std::cout;
using std::endl;
using std::string;

int main() {
  const string s1("Hello");
  string s2("Hello");

  //    s1 += "Joe"; // Error
  s2 += "Joe";

  cout << "s1: " << s1 << endl;
  cout << "s2: " << s2 << endl;

  return EXIT_SUCCESS;
}

輸出:

s1: Hello
s2: HelloJoe

在 C++ 指標型別中使用 const 關鍵字

請注意,當我們宣告一個指標物件時,我們通常也會包含指向物件的型別。因此,僅指定一個 const 關鍵字作為宣告語句的字首變得很棘手。因此,我們需要為指標和指向物件本身設定單獨的 const 說明符。

通常,我們會有這些說明符的三種組合:第一種是指標和物件都是不可修改的;指標不能重新分配的第二種組合,但物件本身是可變的;最後,我們有了指標可變而物件不可變的變體。

所有三個變體都在下一個程式碼片段中宣告,以演示相應的語法表示法。有時,建議從最右邊的說明符到左邊閱讀這些宣告,但你也可以記住 *const 宣告符用於指示不可變指標。

#include <iostream>

using std::cout;
using std::endl;
using std::string;

int main() {
  string s2("Hello");

  const string *const s3 = &s2;  // both are non-mutable
  s3 = &s2;                      // Error
  *s3 = s2;                      // Error

  const string *s4 = &s2;  // only string object is non-mutable
  s4 = s3;
  *s4 = s2;  // Error

  string *const s5 = &s2;  // only pointer is non-mutable
  s5 = s3;                 // Error
  *s5 = s2;

  return EXIT_SUCCESS;
}
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - C++ Const