C++ 中的 const 關鍵字

Migel Hewage Nimesha 2023年10月12日
  1. 在 C++ 中宣告 Const 變數
  2. 在 C++ 中使用帶有指標的 const
  3. C++ 中指向 const 變數的指標變數
  4. 指向 C++ 中值的 const 指標變數
  5. C++ 中指向 const 變數的 const 指標變數
  6. C++ 中的 const 成員函式和 const 物件
C++ 中的 const 關鍵字

const 關鍵字代表 C++ 中的常量,用於在整個程式中使特定值/值保持不變。

一旦變數/物件/函式被宣告為穩定的,編譯器將不會讓程式設計師在程式的其餘部分修改分配的值。

它確保程式在執行期間不間斷地執行。如果程式設計師稍後嘗試更改該值,編譯器將顯示編譯錯誤。

const 的主要優點是它允許特定值/值在整個程式中保持不變。如前所述,它還將使編譯器能夠進行原本不可能的特定優化。

const 關鍵字可以在程式中以特定的不同方式使用,以滿足不同的程式設計需求。

在 C++ 中宣告 Const 變數

將變數設為常量時,必須始終在宣告時對變數進行初始化。變數說完之後,就不可能在程式碼的不同部分改變它的值了。

將變數宣告為常量;

const int x = 1;

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

有三種方法可以將 const 關鍵字與指標一起使用。

  • 指向 const 值的指標變數。
  • 指向一個值的 const 指標變數。
  • 指向 const 變數的 const 指標。

C++ 中指向 const 變數的指標變數

這意味著指標指向一個常量變數,我們可以使用指標指向的變數的值,但我們不能使用指標更改變數的值。

const int* y;

使字串或陣列不可變時很有用。

指向 C++ 中值的 const 指標變數

這裡指標是一個常量,但指標的值不是常量;因此,可以更改其值。

此外,雖然我們改變了值,但我們不能改變指標的記憶體位置。當儲存改變它的值而不是它的記憶體位置時,它是必不可少的。

int z = 2;
const int* y = &z;

C++ 中指向 const 變數的 const 指標變數

在這種情況下賦值後,就不可能改變指標變數或指標所指向的變數的值。

int i = 3 const int* const j = &i;

C++ 中的 const 成員函式和 const 物件

C++ 是一種物件導向的程式語言,在某些情況下,建立的物件並非旨在用於在程式的任何部分進行的任何更改。

因此,使用 const 關鍵字使物件成為常量對於這種情況非常有幫助。如果需要將物件宣告為 const,則必須在宣告時對其進行初始化。

初始化物件後,在程式的其餘部分中無法更改賦予物件的任何尺寸。

編譯器會丟擲編譯錯誤。這是一個 const 物件的示例。

#include <iostream>
using namespace std;

class length {
 public:
  int x;
  length(int y) { x = y; }
};

int main() {
  const length obj1(15);
  cout << "The length of object 1 is " << obj1.x << endl;
  return 0;
}

輸出:

The length of object 1 is 15

當宣告一個函式後跟 const 時,將建立一個常量函式。它主要用於 const 物件。

重要的是要注意,如果通過 const 物件呼叫成員函式,則無論成員函式是否打算更改物件,編譯器都會丟擲錯誤。

這是一個 const 成員函式的示例。

#include <iostream>
using namespace std;

class length {
 public:
  int x;
  length(int y) { x = y; }
  int getvalue() const { return x; }
};

int main() {
  const length obj1(15);
  cout << "The length of object 1 is " << obj1.getvalue() << endl;
  return 0;
}

輸出:

The length of object 1 is 15

const 的要點是它不允許修改不應修改的內容。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

相關文章 - C++ Const