new的三种用法
第一种 :创建一个新对象
Test* p= new Test(10);
这里的new的用法是创建一个新的Test型的对象,该用法一共有三个步骤:
- 1.申请一个空间
- 2.在申请的空间当中构造一个对象,并将该对象放置到空间中
- 3.将空间的地址返回
第二种:申请空间
Test* s=(Test*)::operator new(sizeof(Test));
operator new的作用同malloc的作用相同,都是申请一个空间,区别在于,返回值不同;当空间不足时malloc会返回一个“nullptr”,operator new会返回一个throw_bad的异常。
第三种:定位new
new(s) Test(10);
该用法与构造new十分相似,是在已经确定的空间当中,构造一个对象,并将该对象放置到声明的空间当中。