#include <iostream>
using namespace std;
struct Node{
int u;
Node(int uu = 0):u(uu){
//cout << "create" << endl;
}
~Node(){
u = -1000;
//cout << "delete/n";
}
};
int main(){
Node mem[100];
Node *p = mem;
Node *q = new (p)Node(10);
cout << p << ' ' << q << ' ' << mem << endl;
cout << q->u << endl;
q->~Node();
Node *r = new(p)Node(20);
cout << r->u << endl;
for(int i = 0; i < 10; ++i)
cout << mem[i].u << endl;
return 0;
}
上次同学做百度网上的题(话说他没怎么学过C++。。。)碰到一个题,上面就有这种new的放置语法,当时不太懂,看到书上才知道有这种用法。。。
Node *q = new (p)Node(10); 就是从p为首地址分配一段内存给q,这段内存是已经预先开辟的,可能是用来共享的吧,所以不用的时候要掉用析构函数而不是delete。