1

別の関数への別のポインターを返す関数へのポインターが、C で使用されるメカニズムであり、ランタイム ポリモーフィズム/コールバックを導入するという事実を考慮すると、局所性を改善し、ポインターと間接参照に関するコストを削減しながら、C++ でこれを実装する同等の方法は何ですか? ?

たとえば、このシンタックス シュガーは役に立ちますが、私はこれにはあまり興味がありません。C っぽいのではなく、C++ の方法で物事を行うには良い方法ですが、ローカルtypedef性を改善することにもっと関心があります。実行時の明示的なポインターの使用。

4

2 に答える 2

3

C で関数ポインタを使用してポリモーフィズムをエミュレートする本当の理由は、パフォーマンスではなく、C が実際のポリモーフィズムもテンプレートもサポートしていないという事実です。これらは、C++ で使用できる 2 つの代替手段です。このスレッドでは、3 つのアプローチすべてを比較しています。

関数ポインターの呼び出しには、仮想関数呼び出しが行う追加の vtable ルックアップは必要ありませんが、仮想関数と関数ポインターの呼び出しはどちらも同じ主要なパフォーマンスの問題に悩まされることに注意してください: どちらの場合も分岐予測は信頼性が低く、終了する傾向があります。より多くのパイプライン フラッシュでアップします。

于 2013-11-21T08:19:45.437 に答える
0

要件の一部を満たすために仮想関数を使用できると思います。

于 2013-11-21T07:54:41.787 に答える