1. ホーム
  2. c++

[解決済み] なぜC++には基底クラスがないのですか?

2023-04-08 06:18:10

疑問点

設計の観点から言うと、C++では、なぜすべてのベースクラスの母体がないのでしょうか? object であるような基底クラスがないのはなぜでしょうか?

どのように解決するのですか?

決定的な裁定は StroustrupのFAQ . 要するに、意味的には何も伝わらないのです。コストがかかる。テンプレートはコンテナの方が便利です。

なぜ C++ には普遍的なクラス Object がないのですか?

  • ジェネリックプログラミングは、ほとんどの場合において静的に型安全な代替手段を提供します。その他のケースは多重継承で処理します。

  • 有用なユニバーサルクラスは存在しません。真にユニバーサルなものは、それ自身のセマンティクスを持ちません。

  • 普遍的なクラスは、型やインターフェイスについてのずさんな考えを助長し、過剰な実行時チェックを引き起こします。

  • 普遍的な基底クラスを使用することは、コストを意味します。オブジェクトは多相であるためにヒープで割り当てられなければなりません。ヒープ オブジェクトはコピー セマンティクスを自然にサポートしません。ヒープオブジェクトは単純なスコープ動作をサポートしない(これはリソース管理を複雑にする)。普遍的な基底クラスは、dynamic_castや他の実行時チェックの使用を奨励します。