Dynamic_Cast C++

Dynamic Cast C



この記事では、C++ プログラミング言語の動的キャストについて説明します。まず、キャスティングの概念とさまざまなタイプのキャスティングを理解する必要があります。変数のデータ型を変更するプロセスは、キャストと呼ばれます。 C++ プログラミング言語では、キャストは暗黙的キャストと明示的キャストの 2 つのカテゴリに分けられます。

C++ でのデータ型変換:

型キャストは、データ型を別のデータ型に変更する手順です。 C++ プログラミング言語には、暗黙的キャストと明示的キャストの 2 種類のキャストまたは型変換があります。自動型変換は、暗黙的な型キャストの別名です。これは、リアルタイム コンパイル中にコンパイラによって実行され、ユーザーの入力やアクションは必要ありません。式に 2 種類のデータ型がある場合、この形式のキャストが発生します。例えば:

  グラフィカル ユーザー インターフェイス、テキスト、アプリケーション 説明が自動的に生成されます







与えられたコードでは、最後の行の式に整数変数と文字変数が挿入され、整数変数「i」の値が変更されていることがわかります。このステートメントでは、「a」に相当する ASCII 数値が文字値に変換され、変数「i」の整数値に追加されます。変数「i」の値が出力される場合、結果はこれらの値の両方の合計になります。コンパイラは、文字変数のデータ型を右側のアルファベットの ASCII 標準値に変換することにより、自動的に整数データ型に変換します。これは、実行時の暗黙的または自動化された型変換の好例です。



現在、明示的な型キャストまたは型変換に関しては、自動化されたプロセスではありません。ユーザーは、コード内で変数のデータ型を別の型の変数に手動で変換する必要があります。データ型は通常、メモリ空間と保持できる情報量に基づいて階層に配置されます。したがって、下位のデータ型を使用して情報を格納するが、情報の損失を最小限に抑え、より多くの情報を格納できるように、上位のデータ型に変換する必要がある場合は、明示的な型キャストまたは型変換が一般的です。終わり。たとえば、整数型変数は小数点以下の値を格納できないため、整数変数を使用し続けると、一部の情報が失われる可能性があります。この損失を避けるために、整数変数を float 変数に変換し、小数点以下の値を保存して情報の損失を防ぎます。 C++ プログラミング言語での明示的な型変換は、代入またはキャスト演算子を使用する 2 つの方法のいずれかで行うことができます。代入変換はコード式で行われ、この式の構文を以下に示します。



# 「(データ型)式」

上記のコードでは、ブラケット内に有効なデータ型を配置する必要があり、ブラケットの後に、変更したい変数または式をブラケット内に記述されたデータ型に記述する必要があります。





次に、C++ プログラミング言語のキャスト演算子によって行われる変換のタイプを調べます。キャスト演算子は単項演算子とも呼ばれ、変数のデータ型を既存のものから別のものに強制的に変更します。キャスト キャスト演算子には、静的キャスト、動的キャスト、コンスト キャスト、再解釈キャストの 4 種類があります。

C++ での動的キャスト:

C++ プログラミング言語での動的キャストは、RTTI (Run Time Type Identification) と呼ばれる概念に基づいています。 RTTI は、C/C++、Ada、Object Pascal などのいくつかのプログラミング言語に存在する関数です。実行時型識別または情報は、プログラムの実行時にオブジェクトのデータ型の詳細に関する情報を識別および抽出する機能です。この関数は、「typeid」関数や動的型キャストなどの型キャスト メソッドの安全なパスを提供します。実行時にデータ型情報を検出し、オペレーターがプレイしているときにデータ型の変換を支援します。



動的キャストは、実行時の安全なダウン キャストのために C++ で主に使用されます。動的キャストを使用するには、基本クラスに 1 つの仮想関数が必要です。動的キャストは、この情報を利用して安全なダウン キャストを決定するため、ポリモーフィックな基本クラスでのみ機能します。動的キャスト オペレーターは、動的キャストを行います。動的キャストに関連する概念について理解したので、実装部分に進むことができます。最初に、以下に記述されている C++ プログラミング言語で動的キャストを使用するための構文を見てみましょう。

# 'dynamic_cast (式)'

上記の式では、最初の部分で演算子の名前が記述されています。山括弧内には、式を変換する必要があるデータ型の名前を書き、丸括弧内には、変換したい変数またはオブジェクトの名前を書きます。

動的キャスト演算子を使用して変数のデータ型を変換するためのパラメーターを入力する方法がわかったので、それを使用して変数のデータ型を変換できます。

Ubuntu 20.04 での動的キャスト メソッドの使用:

この概念を実装するには、いくつかのクラスを使用して、継承によってクラスのオブジェクトを変換する必要があります。そのため、まず最初に、Ubuntu 環境の C++ プログラム ファイルが拡張子「.cpp」で保存されていることを知っておく必要があります。このファイルをデスクトップに作成するには、ターミナルを開いて「cd Desktop」と入力します。コマンド ラインを入力してから、Enter キーを押して「touch filename .cpp」と入力し、拡張子が「.cpp」のファイルを作成します。次に、そのファイルにコードを記述して基本クラスと 2 つの派生クラスを作成し、ドライバー コードで動的キャスト演算子を使用します。

  グラフィカル・ユーザー・インターフェース、テキストによる説明の自動生成

保存ボタンをクリックした後、ファイルを終了します。ターミナルに戻り、ファイル名と拡張子「.cpp」を指定してコマンド「g++」を使用してファイルをビルドします。このコマンドを使用すると、拡張子が「.out」のファイルが作成されます。 「./」に続けて「.out」拡張子を入力すると、そのファイルを実行できます。
  自動生成されたテキスト説明

このプログラムでは、基本クラス ポインターは派生クラス 1 オブジェクト (d1) を格納します。動的キャストの基本クラスであるポインタは、Derived1 オブジェクトを保持し、それを派生クラス 1 に割り当てました。これにより、有効な動的キャストが提供されました。

結論 :

この記事では、C++ プログラミング言語で使用される型キャストの方法を学びました。キャストの種類についても詳しく説明し、C++ プログラミングでそのようなメソッドを使用する理由についての必要性に焦点を当てました。 RTTI と呼ばれる、情報を取得して正しい変換を検証することにより、変数のデータ型の変換を支援するアシスト機能について説明しました。また、Ubuntu 20.04 環境の C++ プログラミング言語の式で動的キャスト演算子を使用して、動的キャストの概念を実装しました。