it编程 > 编程语言 > C/C++

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

19人参与 2026-03-08 C/C++

一、代码

class testmem {
protected:  // 藏起来!
    testmem() { }      // 构造函数
    ~testmem() { }     // 析构函数

public:
    static testmem* create() { return new testmem; }  // 唯一创建方式
    static void drop(testmem* p) { delete p; }        // 唯一销毁方式
};

二、为什么这么写?

普通类(谁都能动)

testmem t;        // 栈上创建
testmem* p = new testmem;  // 堆上创建
delete p;         // 随便销毁

限制类(只能我允许)

// testmem t;           ❌ 不行!
// testmem* p = new testmem; ❌ 不行!
// delete p;            ❌ 不行!

testmem* p = testmem::create();  // ✅ 只能这样创建
testmem::drop(p);                  // ✅ 只能这样销毁

三、三句话讲明白

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

protected: 
    testmem() { }

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

protected:
    ~testmem() { }

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

static testmem* create() { return new testmem; }  // 创建窗口
static void drop(testmem* p) { delete p; }        // 销毁窗口

四、为什么要这样?

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

到此这篇关于c++中限制对象创建和销毁的文章就介绍到这了,更多相关c++ 限制对象创建销毁内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

C++中分配器allocator的实现

03-08

C++中construct_at和uninitialized_copy方法的使用

03-08

C语言五大经典排序算法插入、希尔、冒泡、选择、堆排序完全攻略

03-08

c++ CRTP模式的使用小结

03-08

详解C++26 新特性

03-08

浅谈C语言弱定义机制

03-08

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论