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

 更新时间:2026年03月08日 15:27:44   作者:yy__xzz  
本文主要介绍了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++ 限制对象创建销毁内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • C++ 右值引用(rvalue references)与移动语义(move semantics)深度解析

    C++ 右值引用(rvalue references)与移动语义(move semanti

    文章主要介绍了C++右值引用和移动语义的设计动机、基本概念、实现方式以及在实际编程中的应用,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-12-12
  • 浅析C++中cout的运行机制

    浅析C++中cout的运行机制

    关于C++中cout的使用,相信大家再熟悉不过了,然而对于cout是如何输出的?输出的机制是啥,需要进一步的了解。本章娓娓道来。前几天在网上看到这么一个题目
    2013-10-10
  • C语言中的时间函数clock()和time()你都了解吗

    C语言中的时间函数clock()和time()你都了解吗

    这篇文章主要为大家详细介绍了C语言中的时间函数clock()和time(),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C语言使用ffmpeg实现单线程异步的视频播放器

    C语言使用ffmpeg实现单线程异步的视频播放器

    这篇文章主要为大家详细介绍了C语言如何使用ffmpeg实现单线程异步的视频播放器功能,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-12-12
  • 使用C语言求解扑克牌的顺子及n个骰子的点数问题

    使用C语言求解扑克牌的顺子及n个骰子的点数问题

    这篇文章主要介绍了使用C语言求解扑克牌的顺子及n个骰子的点数问题的方法,解答实例主要为了突出解题的算法,需要的朋友可以参考下
    2016-03-03
  • C 指针和OC 对象之间的转换方法

    C 指针和OC 对象之间的转换方法

    这篇文章主要给大家介绍了关于C 指针和OC 对象之间的转换方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • C++模板的特化超详细精讲

    C++模板的特化超详细精讲

    最近我学习了C++中的模板相关知识,模板是泛型编程的基础,十分重要。所以特意整理出来一篇文章供我们一起复习和学习
    2022-08-08
  • C++设计模式之组合模式(Composite)

    C++设计模式之组合模式(Composite)

    这篇文章主要为大家详细介绍了C++设计模式之组合模式Composite,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Visual Studio 2022 上使用ffmpeg的详细步骤

    Visual Studio 2022 上使用ffmpeg的详细步骤

    文章介绍了在开发项目中配置FFmpeg库的步骤,添加包含目录、库目录、依赖项及动态库路径,确保编译器和链接器正确识别FFmpeg资源,最后通过测试验证配置有效性,感兴趣的朋友一起看看吧
    2025-07-07
  • C语言中数据结构之链式基数排序

    C语言中数据结构之链式基数排序

    这篇文章主要介绍了C语言中数据结构之链式基数排序的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09

最新评论