是否可以在C++中手动调用类的构造函数

Is it possible to manually call the constructor of a class in C++?

本文关键字:调用 构造函数 C++ 是否      更新时间:2023-10-16

创建类的对象最常用的方法是使用 new 关键字。它还调用构造函数。但是,如果我们使用 malloc 函数来创建对象,则不会调用构造函数。使用 malloc 创建对象后是否仍然可以手动调用构造函数?

听起来你想把构造函数称为由malloc创建的一段内存。 这是可能的,称为放置新

void* pMemory = malloc(sizeof(C));
C* pValue = new (pMemory) C();

不能像调用其他函数那样直接调用构造函数,因为构造函数没有名称。

你可以做的是使用放置 new,这将在提供给放置 new 的内存上调用您的构造函数。