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.