私有构造函数 - singleton

本文最后更新于:1 年前

使用私有构造函数强化singleton属性

singleton是指这样的类,它只能实例化一次。singleton通常被用来代表那些本质上具有唯一性的系统组件,比如视频显示或者文件系统。

实现singleton有两种方法。这两种方法都要把构造函数保持为私有的,并且提供一个静态成员,以便允许客户能够访问该类唯一的实例:在第一种方法中,公有静态成员是一个final域:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A{
public:
static A& getInstance();
setUp{....};
private:
A();
A(const A& rth);
}

static A& getInstance(){
static A a;
return a;
}

//调用
A::getInstace().setUp();

可以实现私有构造函数的方式:

  • static 静态变量
  • frient 友元类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class OnlyHeapClass
{
public:
static OnlyHeapClass* GetInstance()
{
// 创建一个OnlyHeapClass对象并返回其指针
return (new OnlyHeapClass);
}
void Destroy();
private:
OnlyHeapClass() {}
~OnlyHeapClass() {}
};
int main()
{
OnlyHeapClass *p = OnlyHeapClass::GetInstance();
... // 使用*p
delete p;
return 0;
}

私有构造函数 - singleton
https://wlpswmt.github.io/2023/03/20/singleton/
作者
Sivan Zhang
发布于
2023年3月20日
许可协议