读书人

return new Item_base(*this)怎么解释

发布时间: 2012-03-04 11:13:33 作者: rapoo

return new Item_base(*this)如何解释?
我在看C++ Primer第四版的中文版,在507页看关于句柄内容,其中有个用于复制未知类型的clone函数,代码如下:
class Item_base{
public:
virtual Item_base* clone() const
{
return new Item_base(*this);
}
};

class Bulk_item{
public:
Bulk_item* clone() const
{
return new Bulk_item(*this);
}
};

其中return new Item_base(*this);返回的是函数局部变量的指针么?这样的话不是在函数执行完毕后new出来的资源就撤销了么?
应该怎么解释呢?最好能告诉我这个规则在C++ Primer第四版什么位置,多谢各位大虾!


[解决办法]
返回是一个指针,这个对象是动态分配出来的
保存这个指针的地方释放这个指针.
[解决办法]
返回的是一个 指针,这个指针指想 new 出来的一段空间

这个空间需要用delete去释放

函数退出,这个指针指向的空间是不会释放的,要你手动去delete

所以,你在外面得到这个返回的指针用完的时候自己释放
[解决办法]
楼主都看到这么后面了,却还对返回函数里new的指针还没搞清楚,说明前面看得不认真,基本上书上习题都没做。
需要回过头去看第二遍。
[解决办法]
Bulk_item a;
Bulk_item* b;

b=a.clone();
...
delete b;
[解决办法]
指针是局部的,
但是这个指针被return了,只要外部有一个接收指针,
那么就可以正常 delete ...
[解决办法]
return new Item_base(*this);
==============
堆上申请一个Item_base类对象,并以本对象(this指针所指对象)初始化构造之,返回这个新对象的在堆上的地址,外部一个指针接收这个地址,即可释放内存不会造成不良影响
[解决办法]

return new Item_base(*this);
==============

返回由构造函数构造的对象指针

读书人网 >C++

热点推荐