C STL コンテナから派生するリスク
関数のオーバーロードやテンプレートの特殊化など、C STL コンテナからクラスを派生する潜在的な利点にもかかわらず、およびデバッグの改善には、これに関連する固有のリスクがあります。
次の例を考えてみましょう:
#include <vector> class Rates : public std::vector<double> { }; class Charges : public std::vector<double> { }; int main() { auto p1 = new Rates; auto p2 = new Charges; kill_it(p2); // User code that knows nothing about Rates or Charges kill_it(p1); return 0; }
kill_it 関数は、std::vector
この問題は、ユーザーが誤って kill_it 関数の ??? にエラーを導入した場合に発生します。セクション。たとえば、ユーザーが kill_it(p2) を呼び出す前に、Rates オブジェクトを指すように p2 を変更した場合、std::vector
このリスクを軽減するには、STL コンテナを処理するときに派生ではなく合成を使用することが一般的に推奨されます。構成により、より柔軟でエラーが発生しにくいアプローチが可能になります。
以上がC STL コンテナから継承する必要がありますか: リスクと代替案?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。