C++ の学習に使用している本のコードで実際に何が起こっているのか理解できません。コードは次のとおりです。
class Base
{
public:
Base() {};
virtual ~Base() {};
virtual Base* Clone() {return new Base(*this);}
};
class Derived
{
public:
Derived() {};
virtual ~Derived() {};
virtual Base* Clone() {return new Derived(*this);}
};
したがって、このClone()
関数では、関数が Base クラス オブジェクトへのポインターを返すことがわかります。私が理解していないのは、その関数内で何が起こっているかです。以前にnew
as を使用したとき、基本的に整数用のフリー ストアに十分なメモリを割り当ててから、そのアドレスを返し、そのアドレスを pointer に適用するというint *pInt = new int
印象を受けました。同じロジックで、コードの一部を理解しようとしています。したがって、Derived クラス オブジェクトのフリー ストアに十分なメモリを割り当て、アドレスを返していると思います。アドレスは関数によって返されます。new
pInt
new Derived(*this)
Clone()
しかし、それがコンストラクターである場合、なぜ*this
コンストラクターを通過するのでしょうか? *this
複製されているオブジェクトのアドレスを渡すことを意味することは理解していますが、関数のコンテキストでの構文はわかりませclass_name(address_of_an_object)
んnew
。
誰かがその部分で何が起こっているのか説明してもらえますか?
前もって感謝します。