gpt4 book ai didi

c++ - 单例类的私有(private)析构函数

转载 作者:可可西里 更新时间:2023-11-01 16:57:07 25 4
gpt4 key购买 nike

单例类必须有私有(private)析构函数吗?

最佳答案

如果单例在全局范围内作为变量实现,它必须有一个公共(public) 析构函数。在全局范围内只能访问公共(public)成员。

如果它在自己的类中被声明为静态成员或静态本地,那么析构函数可能是私有(private)的。当程序退出时,析构函数在类范围内被调用,在那里它是可访问的。这是强制对象成为单例的一种方法。你需要强烈执行吗?如果是这样,是的。这取决于您所说的“强制”是什么意思。

class A{
private:
~A() {}
public:
static A &getGlobalA() {
static A a2; // <- or here - better technique
return a2; // this is initialized upon 1st access
}; // and destroyed on program exit

static A a; // <- constructor, destructor accessed from here
};

A A::a; // <- but "called" from here in terms of control flow

关于c++ - 单例类的私有(private)析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2559750/

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