C++ の const キーワード
-
C++ での
Const
変数の宣言 -
C++ のポインタで
const
を使用する -
C++ の
const
変数へのポインタ変数 -
C++ の値への
const
ポインタ変数 -
C++ の
const
ポインタ変数からconst
変数へ -
C++ の
const
メンバー関数とconst
オブジェクト
C++ では Constant を表す const
キーワードは、プログラム全体で特定の値を一定にするために使用されます。
変数/オブジェクト/関数
が安定していると宣言されると、コンパイラーは、プログラムの残りの部分で割り当てられた値をプログラマーに変更させません。
これにより、プログラムの実行中にプログラムが中断されることなく実行されます。プログラマーが後で値を変更しようとすると、コンパイラーはコンパイルエラーを表示します。
const
の主な利点は、特定の値をプログラム全体で一定にできることです。前述のように、コンパイラーは、他の方法では不可能な特定の最適化を行うこともできます。
const
キーワードは、プログラム内で特定のさまざまな方法で使用して、さまざまなプログラミングニーズに対応できます。
C++ での Const
変数の宣言
変数を定数にする場合、宣言時に変数を常に初期化する必要があります。変数が言われた後、コードの別の部分でその値を変更することはできません。
変数を定数として宣言するには;
const int x = 1;
C++ のポインタで const
を使用する
ポインタで const
キーワードを使用する方法は 3つあります。
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.