我无法理解我用来学习 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
as in 时int *pInt = new int
,我的印象是new
基本上在空闲存储上为整数分配了足够的内存,然后返回该地址,将地址应用于指针pInt
。使用相同的逻辑,我试图理解new Derived(*this)
代码的一部分。所以,我认为它在空闲存储上为 Derived 类对象分配了足够的内存,并返回地址,然后由函数返回Clone()
。
但是,如果它是构造函数,为什么它会*this
通过构造函数?我理解*this
意味着它传递正在克隆的任何对象的地址,但我不理解函数class_name(address_of_an_object)
上下文中的语法。new
有人可以解释那部分发生了什么吗?
提前致谢。