Placement New
普通的new 操作符,假设有个类叫 class Foo
Foo *p = new Foo();
这行代码实际上干了两件事,首先分配一块内存,然后调用Foo的构造函数
但是有时候,我们已经有一块内存,不需要再分配,只需要调用构造函数,但是C++语法是不允许直接调用构造函数的
p->Foo::Foo(); // 编译错误error: cannot call constructor ‘Foo::Foo’ directly
那么想在已经存在的内存上构建对象,就要用到 Placement New,实际上就是帮你调用下构造函数
void *p = malloc(sizeof(Foo)); Foo *bar = new (p) Foo();
这个特性不能说绝对没用,但是极少会用到。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有