gpt4 book ai didi

c++ - 对于 C++ 中的静态类(具有私有(private)构造函数),我应该定义一个析构函数吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:40:29 24 4
gpt4 key购买 nike

我在 C++ 中有一个静态类,即这个类的所有成员都是静态的。

因为我不希望类被实例化,所以我将构造函数设为私有(private)。我没有为此类定义默认的复制赋值运算符或复制构造函数,因为它永远无法实例化。然而,我的静态代码分析器告诉我:

If you have declared a destructor because your class manages resources, you may want to declare a copy constructor and copy assignment operator too for the same reason.

-> 这个类不定义析构函数可以吗?既然它永远无法被创造,它也无法被摧毁,我想是吧?

-> 这是一个好习惯吗?我的设计有什么问题吗?

最佳答案

Since I do not want the class to be instantiated ever, I make the constructor private.

如果您可以访问 C++11 编译器,您有更好的选择:您可以 explicitly delete the "gratuitous" constructor provided by the compiler .这应该可以解决析构函数的问题,因为编译器会知道不可能构造您的类。

如果您不能使用已删除的构造函数功能,将构造函数声明为私有(private)就足以防止外部实例化。析构函数不是必需的,因为没有可破坏的东西。

Is this a good practice? Anything wrong with my design?

这种做法在无法定义独立函数/变量的语言中更为常见。另一方面,C++ 提供独立的函数和变量。这两个特性与 namespace 的组合使得只有静态成员的类变得不必要:这样的类在功能上等同于 namespace ,但对于 C++ 来说不是惯用的。

关于c++ - 对于 C++ 中的静态类(具有私有(private)构造函数),我应该定义一个析构函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698924/

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