c++ - 在特定内存位置构造 c++ 对象
问题描述
我正在尝试在特定内存位置运行类的构造函数/默认初始化程序。
我正在尝试使用池,所以我为对象分配了内存(使用 malloc),并且我有我想去的地址。
我只是不知道如何在那个 void* 位置运行对象的构造函数。
这可能吗?
解决方案
阅读更多关于 C++ 的内容(它是一种非常复杂的编程语言;很少有人完全掌握它,我当然不会)。我推荐一本好书,例如Programming: Principle and Practice Using C++(由 C++ 的主要设计者 Stroustrup 撰写)。然后查看一些C++ 参考站点和一些标准,如n3337(用于 C++11)或一些更新版本(如 C++14 或 C++17)。
您想要放置new
,因此要在指针位置(已声明)构造一个Cla
带有参数的类对象,您可以编写代码:1
p
void*p;
Cla*ptr = new(p) Cla(1);
顺便说一句,如果SubCla
是Cla
(具有两个参数的适当构造函数)的子类,您当然可以拥有Cla*ptr = new(p) SubCla(1, "x");
推荐阅读
- c++ - 使用 C++ 的 HTTP 请求
- postgresql - 没有聚合的PostgreSQL求和
- scala - 如何通过匹配列值火花找到相似的行?
- php - 如何在 laravel 6.x 错误中启用符号链接
- json - 如何从 JSON 对象生成打字稿类型(不是接口)
- php - Laravel Collections:提取指定的键集并将不存在的键设置为默认值
- css - 什么是 Sass %(百分比)选择器?
- android - 使用 MockK coVerify 时,未调用方法
- python - groupby 中两个函数的区别
- mysql - 运行优化命令时,它会重建表,那么数据库中需要多少额外空间?