CRTP による静的ポリモーフィズム
仮想メンバー関数に関連するパフォーマンスのオーバーヘッドを排除するために、C は CRTP (Curiously Recurring Template Pattern) を提供しています。この手法により、型の階層に対して静的に定義されたインターフェイスの作成が容易になり、コンパイル時のディスパッチが可能になります。
代替実装
CRTP は 2 つの異なる方法で活用できます。 :
1.静的インターフェイス仕様:
<code class="cpp">template <class Derived> struct base { void foo() { static_cast<Derived *>(this)->foo(); }; };</code>
2.コンパイル時の配線:
<code class="cpp">template <class T> void bar(base<T> &obj) { obj.foo(); // static dispatch }</code>
使用例:
これらのアプローチを使用すると、コンパイル時の型推論を使用して静的にディスパッチされるインターフェイスを作成できます。
<code class="cpp">struct not_derived_from_base { }; my_type my_instance; not_derived_from_base invalid_instance; bar(my_instance); // calls my_instance.foo() bar(invalid_instance); // compile error (incorrect overload deduction)</code>
以上がCRTP を使用して C で静的ポリモーフィズムを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。