C++におけるオブジェクト指向プログラミング Part VI
ポリモーフィズム (Polymorphism) とは何か?
ポリモーフィズムとは、「多くの形」という意味のギリシャ語からきており、一つの関数が異なるデータタイプに対して異なる方法で動作するOOPの概念です。C++では、メソッドが同じ名前であっても、それが作用するオブジェクトに基づいて異なる方法で動作することを可能にします。
C++におけるポリモーフィズムのタイプ
コンパイル時ポリモーフィズム(静的バインディング):コンパイル時に決定されます。メソッドのオーバーロードやオペレーターのオーバーロードを通じて実現されます。
実行時ポリモーフィズム(動的バインディング):実行時に決定されます。仮想関数を使用したメソッドのオーバーライドを通じて実現されます。
C++におけるポリモーフィズムの実装
コンパイル時ポリモーフィズム:メソッドのオーバーロード
class Print
{
public:
void show(int i)
{
cout << "整数: " << i << endl;
}
void show(string s)
{
cout << "文字列: " << s << endl;
}
};
int main()
{
Print obj;
obj.show(5); // "整数: 5"を出力
obj.show("こんにちは"); // "文字列: こんにちは"を出力
return 0;
}
実行時ポリモーフィズム:仮想関数
class Base
{
public:
virtual void display()
{
cout << "Baseの表示" << endl;
}
};
class Derived : public Base
{
public:
void display() override
{
cout << "Derivedの表示" << endl;
}
};
void function(Base &obj)
{
obj.display();
}
int main()
{
Base base;
Derived derived;
function(base); // Baseのdisplayを呼び出す
function(derived); // ポリモーフィズムによりDerivedのdisplayを呼び出す
return 0;
}
ポリモーフィズムの利点
柔軟性: 同じ関数が異なるオブジェクトに対して異なる方法で動作することを可能にします。
再利用性とスケーラビリティ: 大規模なアプリケーションにおいて、コードの再利用性とスケーラビリティを促進します。
動的メソッドバインディング: 実行時ポリモーフィズムにより、実行時にメソッドが動的にバインドされます。
結論
C++におけるポリモーフィズムは、より動的で柔軟なコードを可能にする言語の能力を豊かにします。多様なオブジェクト指向設計において、より一般的で拡張可能なコードを書くことを可能にします。
次回のパート7では、C++におけるコンストラクタとデストラクタを探求し、オブジェクトのライフサイクルを管理するOOPの重要な側面に焦点を当てます。
エンジニアファーストの会社 株式会社CRE-CO
su_myat_phyu
参考
Object Oriented Programming in C++ :
C++ Object Oriented Programming :