
一、代码123456789classTestMem {protected:// 藏起来TestMem() { }// 构造函数~TestMem() { }// 析构函数public:staticTestMem* Create() {returnnewTestMem; }// 唯一创建方式staticvoidDrop(TestMem* p) {deletep; }// 唯一销毁方式};二、为什么这么写普通类谁都能动123TestMem t;// 栈上创建TestMem* p newTestMem;// 堆上创建deletep;// 随便销毁限制类只能我允许123456// TestMem t; ❌ 不行// TestMem* p new TestMem; ❌ 不行// delete p; ❌ 不行TestMem* p TestMem::Create();// ✅ 只能这样创建TestMem::Drop(p);// ✅ 只能这样销毁三、三句话讲明白1.构造函数藏起来→ 不能直接new12protected:TestMem() { }2.析构函数藏起来→ 不能直接delete12protected:~TestMem() { }3.提供两个公共窗口→ 通过静态函数操作12staticTestMem* Create() {returnnewTestMem; }// 创建窗口staticvoidDrop(TestMem* p) {deletep; }// 销毁窗口四、为什么要这样原因说明控制数量防止创建太多对象控制时机确保创建/销毁时做必要检查防止误操作避免忘记delete或多次delete到此这篇关于C中限制对象创建和销毁的文章就介绍到这了