問題タブ [non-virtual-interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
72 参照

c++ - NVI は名前の隠蔽を防ぎません。代わりに仮想ファイナルを使用しないのはなぜですか?

次の点を考慮してください。

上記のように、Foo クラスは Foo::method() メンバー関数を使用して NVI パターンに従おうとしています。

子クラス (この場合は Bar) が Foo::method() を Bar::method() で隠すのを妨げているのは何ですか? 私はそれを試してみましたが、何もないと思います。Bar::method() のコメントを外すと、コンソール アプリケーションは実際に method() の Bar 実装に移行します。これは完全に理にかなっています。

virtual final を使用して、子クラスでそのメソッドの名前の非表示を禁止しないのはなぜですか? Foo クラスで提供される例。

ありがとう