我想知道是否有某种技巧可以使用对象指针显式调用构造函数.如果这是一个合法的语法,它将如下所示:
Foo *p = malloc( sizeof(Foo) );
p->Foo::Foo();
Run Code Online (Sandbox Code Playgroud)
PS我知道我能做到,Foo *p = new Foo();但有明确的理由明确使用malloc().
Mat*_*gro 17
您可以使用"placement new"运算符:
Foo *buf = malloc( sizeof(Foo) );
Foo *p = new (buf) Foo();
Run Code Online (Sandbox Code Playgroud)
使用展示位置:
Foo* p = new(malloc(sizeof(Foo))) Foo;
Run Code Online (Sandbox Code Playgroud)
(在此省略任何内存不足检查)
基本上,在指向的位置new(address) Foo()构造一个类型的对象,换句话说:它调用构造函数.Fooaddress