Mic*_*zek 69
呃......用new吗?这就是重点.您也可以显式调用构造函数,但没有理由这样做
A* a = new A();
delete a;
Run Code Online (Sandbox Code Playgroud)
A* a = (A*)malloc(sizeof(A));
new (a) A();
a->~A();
free(a);
Run Code Online (Sandbox Code Playgroud)
war*_*enm 16
如果你真的需要,你可以使用"placement new"语法来做到这一点:
MyClassName* foo = new(pointer) MyClassName();
where pointer指向分配的内存位置的指针大小足以容纳对象的实例.
更喜欢new。
但是,如果由于某种原因您拥有原始内存,则可以使用“ placement new”构造它:
new (ptr) TYPE(args);
Run Code Online (Sandbox Code Playgroud)
并且由于您将不使用delete,因此您需要直接调用析构函数:
ptr->~TYPE();
Run Code Online (Sandbox Code Playgroud)