C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でキャストされた定数


与えられたタスクは、C++でのconst_castの動作を示すことです。

const_castは、型キャスト演算子の1つです。これは、任意のオブジェクトの定数値を変更するために使用されます。または、任意のオブジェクトの定数の性質を削除するために使用されると言えます。

const_castは、ある時点で時々変更する必要がある定数値を持つオブジェクトを持つプログラムで使用できます。

構文

構文は次のとおりです-

const_cast<type name>(expression)

Input: x = 50
const int* y = &x
cout<<"old value is"<<*y<<"\n";
int* z=const_cast<int *>(y);
*z=100;
cout<<"new value is"<<*y;
Output: old value is 50
new value is 100

次の例は、const_castの基本的な使用法を示しています。ここでは、値50が割り当てられたint型の定数変数「x」と、変数「x」を指すint型の別の定数ポインター「y」を宣言しました。

const_castを使用するには、3番目のポインターを作成する必要があります。ここでは、同じデータ型、つまりintのポインター「z」を作成しました。

したがって、定数変数「x」を指す定数ポインター「y」をconst_castに渡し、ポインターzに値を割り当てると、定数ポインター「y」の値を変更できます。

このようにして、const_castを使用して定数値を50から100に変更することができました。

const_castを使用せずにポインタ「y」が指している「x」の値を変更しようとすると、「読み取り専用の割り当て」というエラーが表示されます。 場所」

以下のプログラムで使用されるアプローチは次のとおりです

  • 最初にint型の定数変数を作成し、それに適切なサイズを指定します。たとえば、「a」とその値を20とします。
  • 次に、定数ポインターを作成し、同じデータ型の「b」と言って、定数変数「a」のアドレスを割り当てます。
  • 次に、3番目のポインタを作成します。const_castに使用するデータ型intの「c」としましょう。
  • ここで、定数ポインター「b」をconst_castに渡し、ポインター「c」と同じに保ちます。
  • 最後に、ポインタ「c」の値を変更します。これにより、定数ポインタ「b」が指している値が自動的に変更されます。

アルゴリズム

Start
Step 1 -> In function main()
   Declare a constant int a=20
   Declare a constant pointer int* b=&a
   Declare a pointer int*c = const_cast<int *>(b)
   Assign *c=40
Stop

#include <iostream>
using namespace std;
int main() {
   const int a = 20;
   const int* b = &a;
   cout<<"old value is"<<*b<<"\n";
   int* c=const_cast<int *>(b);
   *c=40;
   cout<<"new value is"<<*b;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

old value is 20
new value is 40

ここで、定数ポインタ「b」は、値=20の定数変数「a」を指しています。これは変更できません。ただし、同じデータ型の3番目の非定数ポインタ「c」を作成し、const_castを使用することで、その定数値を変更できます。

ポインタ「c」の値の変化は、定数ポインタ「b」が指している定数値20の変化をもたらした。したがって、const_castを使用する前の出力値は20であり、使用後の出力値は40でした。

const_castの他の使用法

どのプログラムでも、const_castを使用して、定数データを受け入れない別の関数に定数データを渡すことができます。

#include <iostream>
using namespace std;
int change(int* p2) {
   return (*p2 * 10);
}
int main() {
   const int num = 100;
   const int *p = #
   int *p1 = const_cast <int *>(p);
   cout << change(p1);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

1000

次のプログラムは、const_castを使用して定数値100を、定数データを受け取らない関数change()に渡す方法を示しています。

change()関数は、値を受け取り、それを10で乗算して、最終出力、つまり1000を生成するmain()関数に戻します。

const_castを使用せずに同じプログラムを実行し、定数値をchange()関数に直接渡そうとすると、エラーが表示されます。


  1. C / C ++での型キャストとは何ですか?

    型キャストは、変数をあるデータ型から別のデータ型に変換する方法です。たとえば、「long」値を単純な整数に格納する場合は、「cast」「long」を「int」と入力できます。 キャスト演算子を使用して、値をあるタイプから別のタイプに明示的に変換できます。 次のように- (type_name) expression キャスト演算子によって、ある整数変数を別の整数変数で除算することが浮動小数点演算として実行される次の例を考えてみます- 例 #include <stdio.h> main() {    int sum = 17, count = 5;  

  2. C ++のconstキーワードとは何ですか?

    const修飾子を使用して、変数を定数として宣言します。つまり、変数が初期化されると、値を変更することはできません。 constを使用すると、非常に大きなメリットがあります。たとえば、PIの値のような定数値がある場合、プログラムのどの部分もその値を変更したくないでしょう。したがって、それを定数として宣言する必要があります。 const修飾型で宣言されたオブジェクトは、コンパイラによって読み取り専用メモリに配置される場合があります。また、constオブジェクトのアドレスがプログラムに取り込まれない場合は、まったく格納されない場合があります。たとえば、 #include<iostream&