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