#include <cstring>
#include <iostream>
using namespace std;
struct Name
{
Name(const char * name = "")
{
int size = strlen(name);
if (size > 19) {
size = 19;
}
strncpy(m_name, name, size);
m_name[size] = '\0';
}
char m_name[20];
};
int main()
{
Name a;
cout << a.m_name << endl;
new (&a) Name("Adward Ink");
cout << a.m_name << endl;
new (&a) Name("二斗墨汁");
cout << a.m_name << endl;
return 0;
}
笔记:防止调用拷贝构造函数时的自我拷贝 中也有用过placement new
本文通过一个具体的C++示例介绍了如何使用placement new来初始化已分配内存的对象,以此来避免在某些特定情况下(如构造函数内的自我赋值)不必要的拷贝构造。通过这个例子,我们了解到placement new在内存管理和对象布局上的应用。
660

被折叠的 条评论
为什么被折叠?



