三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

C++中限制对象创建和销毁

C++中限制对象创建和销毁

一、代码

1

2

3

4

5

6

7

8

9

classTestMem {

protected:// 藏起来!

TestMem() { }// 构造函数

~TestMem() { }// 析构函数

public:

staticTestMem* Create() {returnnewTestMem; }// 唯一创建方式

staticvoidDrop(TestMem* p) {deletep; }// 唯一销毁方式

};

二、为什么这么写?

普通类(谁都能动)

1

2

3

TestMem t;// 栈上创建

TestMem* p =newTestMem;// 堆上创建

deletep;// 随便销毁

限制类(只能我允许)

1

2

3

4

5

6

// TestMem t; ❌ 不行!

// TestMem* p = new TestMem; ❌ 不行!

// delete p; ❌ 不行!

TestMem* p = TestMem::Create();// ✅ 只能这样创建

TestMem::Drop(p);// ✅ 只能这样销毁

三、三句话讲明白

1.构造函数藏起来→ 不能直接new

1

2

protected:

TestMem() { }

2.析构函数藏起来→ 不能直接delete

1

2

protected:

~TestMem() { }

3.提供两个公共窗口→ 通过静态函数操作

1

2

staticTestMem* Create() {returnnewTestMem; }// 创建窗口

staticvoidDrop(TestMem* p) {deletep; }// 销毁窗口

四、为什么要这样?

原因说明
控制数量防止创建太多对象
控制时机确保创建/销毁时做必要检查
防止误操作避免忘记delete或多次delete

到此这篇关于C++中限制对象创建和销毁的文章就介绍到这了

← 返回列表