gpt4 book ai didi

C++ 删除静态数据

转载 作者:IT老高 更新时间:2023-10-28 22:10:12 27 4
gpt4 key购买 nike

如果我有一个包含在堆上分配的私有(private)静态数据且永不更改的类,我应该在什么时候(如果有的话)删除它?

据我了解,永远不会构造一个类本身(因为类不是 C++ 中的第一类对象),那么就没有析构函数来删除其中的静态数据吗?我是 C++ 新手,如果我对 C++ 的理解存在根本性缺陷或者答案很明显,我很抱歉!在此先感谢,呃。

最佳答案

如果数据是静态的,则不会在堆上分配,而是在进程关闭期间被破坏。

如果是指向静态数据的指针,例如:

Something* MyClass::aPointer = new Something;

然后像所有其他动态分配的数据一样,它只会删除时销毁。有两种常见的解决方案:

  • 使用智能指针,它有一个可以删除它的析构函数,或者

  • 不要删除它;在大多数情况下,调用析构函数是没有道理的,如果你碰巧在其他静态对象的析构函数中使用了实例,就会遇到破坏顺序问题。

关于C++ 删除静态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com