版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

内存申请和对象构造

本文内容简短,只为记录下一次思考过程,事情起源于一句话,“new操作符会调用operator new分配内存再调用构造函数构造对象”,但最近再次看到这句话的时候越看越有疑问,怎么样调用构造函数??于是就带着这个问题顺便看下operator new和placement new的源码加深下印象了。
众所周知构造函数是在实例化一个类对象时调用,通常我们看到的构造函数是下面这样用:
classA{};intmain(){ A inst=A(); A inst2; A*p=newA();}
上述几种调用方式,不管是在栈上还是堆上实例化一个类对象时,共同点都是内存的申请和类的构造是绑定在一起的。可以试想一下,既然new是先调用operator new再调用构造函数,那么这个过程如果我们自己手动调用呢:
#includeusingnamespace std;classA{public:A():a(0){cout