考虑T* o = new(T())
,其中T定义了复制构造函数。另外,假设表达式new
使用默认的::operator new()
要重新使用为o分配的内存,而不是使用delete o
删除对象,标准是否允许以下顺序:
o->~T()
delete o
我也问这个,因为我不明白为什么std::map<T, V>
(或其operator[]
具体),例如,如果上述序列可以在没有定义的情况下要求T定义一个合适的赋值运算符这个要求。我怀疑地图是以这种方式设计的,因为operator=()
和复制构造函数可以有不同的语义,因为大多数时候它们只是以相同的方式实现。