C++ 中的 const 關鍵字
-
在 C++ 中宣告
Const變數 -
在 C++ 中使用帶有指標的
const -
C++ 中指向
const變數的指標變數 -
指向 C++ 中值的
const指標變數 -
C++ 中指向
const變數的const指標變數 -
C++ 中的
const成員函式和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 的要點是它不允許修改不應修改的內容。
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.
