C++ 中placement new 写一个例子
时间: 2024-05-05 13:16:12 浏览: 111
C++的一个例子
下面是一个使用placement new实现的简单例子:
```cpp
#include <iostream>
#include <new>
class MyClass {
public:
MyClass(int x, int y) : m_x(x), m_y(y) {
std::cout << "MyClass constructor called with x = " << x << " and y = " << y << std::endl;
}
~MyClass() {
std::cout << "MyClass destructor called" << std::endl;
}
void print() {
std::cout << "MyClass: x = " << m_x << ", y = " << m_y << std::endl;
}
private:
int m_x;
int m_y;
};
int main() {
char buf[sizeof(MyClass)]; // 分配足够的内存
MyClass* ptr = new(buf) MyClass(10, 20); // 使用placement new在内存上构造对象
ptr->print(); // 调用对象的成员函数
ptr->~MyClass(); // 手动调用对象的析构函数
return 0;
}
```
在上面的例子中,我们首先手动分配了足够的内存来存储一个`MyClass`对象,然后使用placement new在这个内存上构造了一个`MyClass`对象。构造完成后,我们可以通过指针调用对象的成员函数,最后手动调用对象的析构函数来释放内存。
阅读全文