(注意:这个问题的动机是试图提出预处理器黑客技术来生成无操作分配来回答另一个问题:
接受新对象的宏 https://stackoverflow.com/questions/7522949/c-macro-that-accent-new-object/7523078#7523078
...所以请记住这一点!)
表演展示位置-新在同一块内存上多次运行是完全没问题的。此外,无论听起来多么奇怪,您甚至不需要破坏已经驻留在该内存中的对象(如果有的话)。标准在 3.8/4 中明确允许
4程序可以通过重用存储来结束任何对象的生命周期
对象占用的空间或通过显式调用析构函数
具有重要析构函数的类类型的对象。对于一个对象
具有非平凡析构函数的类类型,该程序不是
需要在存储之前显式调用析构函数
占用的对象被重用或释放;[...]
换句话说,您有责任考虑不调用某些对象的析构函数的后果。
但是,不允许像在代码中那样对同一对象调用析构函数两次。一旦您在同一内存区域中创建了第二个对象,您就有效地结束了第一个对象的生命周期(即使您从未调用其析构函数)。现在你只需要销毁第二个对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)