C++ new

实际上,new在C++中有3种用法,不过我们一般只使用其中的一种。

  • new operator
  • operator new
  • placement new

第1种:

Object *obj = new Object();

这是我们这辈子主要接触的new。其实这个new中包含了下面的两个new的作用:分配内存,构造对象。

 

第2种:分配内存,这个new你可以重载的。

void* operator new(size_t size)

{

    return malloc(size);

}

 

第3种:指定内存处构造对象

void *lpstart = malloc(sizeof(Object));

new(lpstart) Object();

 

补充:

class demo
{
public:
    demo(int val) : _val(val)
    {
    }

    void* operator new(size_t size)
    {
        std::cout<<"new called"<<std::endl;
        return ::operator new(size);
    }

private:
    int _val;
};

posted @ 2012-09-27 13:07  avexer  阅读(127)  评论(0编辑  收藏  举报