【发布时间】:2015-03-29 10:20:29
【问题描述】:
这是一个类。
class A
{
public:
A()
private:
int m_a;
};
我们能否创建一个类的对象,而不是放置运算符new 并使用malloc,如下所示:
void* a = malloc(sizeof(A)); // allocate raw memory
A* obj = reinterpret_cast< A* > ( a ); // assign to the adress
a->A() // call the constructor
正确吗?如果不是,我们可以使用malloc 构造一个对象而不是放置new(使用其他一些C 技术)吗?
【问题讨论】:
-
这还能编译吗?
-
@πάνταῥεῖ 不,
invalid use of A::A。 -
调用构造函数的代码是
new(obj) A,而不是a->A()。是的,这应该可行。 -
我不知道。我需要了解可以通过 malloc 创建实例而不是放置新实例,即使用一些 C 技术?
-
你不能,这是唯一的办法
标签: c++ object malloc dynamic-memory-allocation placement-new