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