首页 > 解决方案 > 在特定内存位置构造 c++ 对象

问题描述

我正在尝试在特定内存位置运行类的构造函数/默认初始化程序。

我正在尝试使用池,所以我为对象分配了内存(使用 malloc),并且我有我想去的地址。

我只是不知道如何在那个 void* 位置运行对象的构造函数。

这可能吗?

标签: c++

解决方案


阅读更多关于 C++ 的内容(它是一种非常复杂的编程语言;很少有人完全掌握它,我当然不会)。我推荐一本好书,例如Programming: Principle and Practice Using C++(由 C++ 的主要设计者 Stroustrup 撰写)。然后查看一些C++ 参考站点和一些标准,如n3337(用于 C++11)或一些更新版本(如 C++14 或 C++17)。

您想要放置new,因此要在指针位置(已声明)构造一个Cla带有参数的类对象,您可以编写代码:1pvoid*p;

Cla*ptr = new(p) Cla(1);

顺便说一句,如果SubClaCla(具有两个参数的适当构造函数)的子类,您当然可以拥有Cla*ptr = new(p) SubCla(1, "x");


推荐阅读