オブジェクトのスライス: 継承時にデータが失われる
オブジェクト指向プログラミングでは、継承によりクラスが親クラスの機能を拡張できます。ただし、この継承メカニズムでは、オブジェクト スライスとして知られる現象が発生し、データ損失が発生する可能性があります。
オブジェクト スライスとは何ですか?
オブジェクト スライスは、オブジェクトが存在するときに発生します。派生クラスのインスタンスは、基本クラスのインスタンスに割り当てられます。この代入中に、派生クラスのデータの一部がアクセスできなくなり、「スライス」されます。
オブジェクトのスライスはいつ発生しますか?
次の 2 つのクラスについて考えてみましょう。
class A { int foo; }; class B : public A { int bar; };
クラス B のインスタンスには、次の 2 つのデータ メンバーが含まれます: foo (継承A) とバー。ただし、次のようにタイプ B のオブジェクトをタイプ A のインスタンスに割り当てると、
B b; A a = b;
b オブジェクトのデータ メンバー バーは a オブジェクトでアクセスできなくなり、オブジェクトのスライスが発生します。これは、 a が基本クラスのインスタンスとして扱われ、派生クラス B で定義された bar メンバーについての知識がないために発生します。
以上がオブジェクトのスライスとは何ですか?また、継承の際にいつ発生しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。