如何在指定的一块内存中构建对象?

时间:2022-07-20 19:49:34
如果我有一块内存的地址p,就在这p上构建对象,不使用new操作符的。
string* p = new string这语句是怎么实现string对象就建立在new出来的内存中的呢,而且还调用了string构造函数?
能不能强制转换?如string* pstr = (string*)p;可以再对内存进行类成员赋值?
若是派生类,这构造函数又没有调用,问题多多。
另一方案在栈中建一个临时对象再进行内存数据的拷贝似乎可行,但繁锁,请大家给点建议。

2 个解决方案

#1


char * buf = new char[sizeof(Object)]
Object obj = new (buf)Object

#2


果然两者内存是一样的。谢谢。
new是怎么实现这种操作的,还能调用构造函数。。

#1


char * buf = new char[sizeof(Object)]
Object obj = new (buf)Object

#2


果然两者内存是一样的。谢谢。
new是怎么实现这种操作的,还能调用构造函数。。