HOWTO · C++

C++ の const キーワード

この記事では、C++ での 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 のポイントは、変更してはならないものを変更できないことです。