【发布时间】:2014-01-04 03:16:02
【问题描述】:
我需要一些帮助来理解我用来学习 C++ 的书中的代码。
Class Fish
{
public:
virtual Fish* Clone() = 0; //pure virtual function
};
Class Tuna: public Fish
{
public:
Tuna* Clone() //virtual clone function
{
return new Tuna(*this);
}
};
该部分实际上是在寻找一种方法来绕过 C++ 中不存在的虚拟复制构造函数。但是,我只是无法将自己的想法包裹在
return new Tuna(*this);
声明。顺便说一句,我了解以下代码。
int* ptr;
ptr = new int[6];
这会将一个 6 个 int 的块分配给一个指针。
new Tuna();
只会分配一个指针,指向一个有足够空间容纳来自第一个代码 sn-p 的类 Tuna 的位置。然而,This 指针的取消引用是什么意思? This指针指向的对象对吗?那么释放它会揭示对象内存位置的内容吗?这如何联系到
new int[6];
和
new Tuna(*this);
【问题讨论】:
-
发布 Tuna 的构造函数
-
顺便说一句,对于 new int[6],不要忘记删除 [] 它,而不是 new Tuna(),它只是一个删除 tunaPtr(即不带括号)。