2016-04-26 4 views
0

派生オブジェクトをベースオブジェクトに割り当てると、スライシングが行われることがわかります。派生クラスオブジェクトの最初の部分は基本オブジェクトにコピーされます。 ここに私の質問があります:基本クラスオブジェクトに派生クラスオブジェクトを割り当てるとどうなりますか(ポインタではなく、オブジェクトassginmentを意味します)

  1. vptr(仮想テーブルポインタ)をベースクラスオブジェクトにコピーできますか?
  2. vptrがベースクラスオブジェクトにコピーされない場合(オブジェクト割り当てがポリモーフィズムを引き起こさないため)、なぜですか?それをサポートするルールはありますか?

答えて

1

いいえ、vtableポインタはコピーされません。割り当て先となるオブジェクトは、割り当ての前後で基本クラスの型であるため、それもできません。

スライスされたオブジェクトで呼び出される仮想メソッドは、基本クラスの実装を呼び出します。