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

C ++プログラムのRTTI(実行時型情報)


このセクションでは、C ++のRTTI(実行時型情報)とは何かを説明します。 C ++では、RTTIはメカニズムであり、実行時にオブジェクトのデータ型に関する情報を公開します。この機能は、クラスに少なくとも1つの仮想関数がある場合にのみ使用できます。これにより、プログラムの実行時にオブジェクトのタイプを判別できます。

次の例では、最初のコードは機能しません。 「(Base *型の)dynamic_castbase_ptrを「classDerived*」と入力することはできません(ソース型はポリモーフィックではありません)」のようなエラーが生成されます。このエラーは、この例には仮想関数がないために発生します。

サンプルコード

#include<iostream>
using namespace std;
class Base { };
class Derived: public Base {};
int main() {
   Base *base_ptr = new Derived;
   Derived *derived_ptr = dynamic_cast<Derived*>(base_ptr);
   if(derived_ptr != NULL)
      cout<<"It is working";
   else
      cout<<"cannot cast Base* to Derived*";
   return 0;
}

これで、仮想メソッドを追加した後、機能します。

サンプルコード

#include<iostream>
using namespace std;
class Base {
   virtual void function() {
      //empty function
   }
};
class Derived: public Base {};
int main() {
   Base *base_ptr = new Derived;
   Derived *derived_ptr = dynamic_cast<Derived*>(base_ptr);
   if(derived_ptr != NULL)
      cout<<"It is working";
   else
      cout<<"cannot cast Base* to Derived*";
   return 0;
}

出力

It is working

  1. 学生の情報を構造体に格納するC++プログラム

    構造体は、さまざまなデータ型のアイテムのコレクションです。これは、さまざまなデータ型レコードを使用して複雑なデータ構造を作成する場合に非常に役立ちます。構造体はstructキーワードで定義されます。 構造の例は次のとおりです。 struct employee {    int empID;    char name[50];    float salary; }; 学生の情報を構造に保存するプログラムは次のとおりです。 例 #include <iostream> using namespace std; struct

  2. 再帰を使用して電力を計算するC++プログラム

    数値の累乗はx^yとして計算できます。ここで、xは数値、yはその累乗です。 たとえば。 Let’s say, x = 2 and y = 10 x^y =1024 Here, x^y is 2^10 再帰を使用してパワーを見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int FindPower(int base, int power) {    if (power == 0)    return 1;    else