【发布时间】:2013-01-19 20:55:20
【问题描述】:
我在 C++ 中有一个静态类,即这个类的所有成员都是静态的。
因为我不希望类被实例化,所以我将构造函数设为私有。 我没有为这个类定义一个默认的复制赋值运算符或复制构造函数,因为它永远不能被实例化。但是,我的静态代码分析器告诉我:
如果因为类管理资源而声明了析构函数,出于同样的原因,您可能还需要声明复制构造函数和复制赋值运算符。
-> 如果我不为这个类定义析构函数可以吗?既然它永远不能被创造,它也不能被摧毁,我想?
-> 这是一个好习惯吗?我的设计有什么问题吗?
【问题讨论】:
-
是的,如果它永远无法被创建,它就永远无法被销毁。你的 dtor 里到底有什么?
-
如果你不打算定义它,你可以删除对析构函数的声明,这可能是提示Rule of three声明的原因
-
实际上,我只是将构造函数和析构函数声明为私有的......一种始终提供构造函数和析构函数声明的编码实践。但我想这不是必需的,对吧?
-
@kiki,如果是为了工作,请和他们谈谈。不过,您几乎永远不需要 dtor。 RAII 类将拥有它们,然后您使用这些 RAII 类而不是自己管理资源。
-
如果类没有非静态数据成员或成员函数,则没有理由阻止某人创建该类型的对象。没有意义,但该对象将完全按照指定的方式工作。不要在这上面浪费时间。
标签: c++ static destructor