C++中要求(或禁止)对象产生于heap中

C++中要求(或禁止)对象产生于heap中,第1张

C++中要求(或禁止)对象产生于heap中,第2张

对象需求在堆中生成。

考虑以下代码:

class heap class
{
public:
void destory()const { delete this;}
private:
~ heap class(){ }
};
heap class * ptr = new heap class;
ptr-> Destory();

这种调用太强大了,不可能生成非堆对象。

关于继承和结合,我不想多说,但是很无聊。

确定对象是否位于堆中

考虑以下代码:

newHeapClass(* newHeapClass);

你觉得编译器应该怎么做?

1.呼叫接线员新

2.调用构造函数

3.称第二个操作员为新操作员

4.调用第二个构造函数

但是令人惊讶的是,编译器并不这样做,所以实际的实现可能是:

1.呼叫接线员新

2.称第二个操作员为新操作员

3.调用构造函数

4.调用第二个构造函数

VC6就是这样实现的。

classHeapClass
{
private:
void * operator new[](size _ tsize);
typedefconstvoid * raw address;
void operator delete[](void * ptr);
public:
voidoperatordelete(void * ptr)
{
printf(" delete \ n ");
::operator delete(ptr);
m _ address . erase(STD::remove(m _ address . begin()、m_address.end()、ptr)、m _ address . end());
退货;
}
void * operator new(size _ tsize)
{
printf(" new \ n ");
void * ptr =::operator new(size);
m _ address . push _ back(ptr);
return ptr;
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++中要求(或禁止)对象产生于heap中

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情