私は次の問題に遭遇しました。これは、C++の動作についてほとんど知らないことを私に証明しました。
純粋仮想関数を持つ基本クラスを使用します
class Base
...
および型の派生クラス
class Derived : public Base{
private:
Foo* f1;
...
どちらにも代入演算子が実装されています。特に、Derivedの代入演算子は、f1のデータをコピーします。私のコードでは、Derivedクラスの2つの新しいインスタンスを作成します
Base* d1 = new Derived();
Base* d2 = new Derived();
ここで代入演算子を呼び出すと
*d1 = *d2;
Derivedの代入演算子は呼び出されず、f1のデータはコピーされません!私がする場合にのみ機能します
*dynamic_cast<Derived*>(d1) = *dynamic_cast<Derived*>(d2);
代入演算子がオーバーロードされない理由を誰かが説明できますか?
ありがとう!