【发布时间】:2021-09-15 21:16:34
【问题描述】:
InitMyObject(MyObject* ptr)
{
*ptr = MyObject();
}
struct Data
{
MyObject obj;
};
extern Data data;
// ...
InitMyObject(&data.obj);
delete &data.obj; // ? is this ok
如何删除(调用解构函数)data.obj,我还尝试将 Data::obj 作为指针(默认为 nullptr)然后传递指针但在初始化时崩溃。
【问题讨论】:
-
你为什么要这样做?您要解决的实际问题是什么?
-
delete仅用于销毁使用new创建的对象。您没有使用new,所以也不应该使用delete。 -
obj将在data碰巧被销毁时自动销毁。你还没有真正展示data是什么,所以我们不能说它是否或何时会发生自己的破坏。 -
你没有;当它的包含对象被销毁时,它也被销毁。有好书清单here.
-
“我想在静态结构中调用我的 obj 变量上的解构” 这将发生在without your intervention。
标签: c++