我在学习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()
函数中,我了解到这个函数返回一个指向基类对象的指针。但是我不理解函数内部发生了什么。之前当我使用 new
时,如 int *pInt = new int
, 我的理解是 new
在堆上为整型分配足够的内存空间,然后返回该地址,并将其应用于指针 pInt
。根据同样的逻辑,我试图理解代码中的 new Derived(*this)
部分。所以我认为它在堆上为派生类对象分配足够的内存空间,并返回该地址,然后由 Clone()
函数返回。
但是,为什么要通过构造函数传递*this
呢?如果那是一个构造函数,我了解 *this
意味着正在克隆的任何对象的地址,但我不理解在 new
函数的上下文中 class_name(address_of_an_object)
的语法。
请问有人可以解释一下那部分的内容吗?
先行谢过。