当前位置: 首页 > news >正文

建设工程施工许可证在哪个网站办wordpress 显示加载时间

建设工程施工许可证在哪个网站办,wordpress 显示加载时间,公司推广,哈尔滨小程序建设在系统设计中,我们常需限制某些类的对象数量(如单例模式、资源受限场景)。本文结合《More Effective C》条款26,剖析C中实现该需求的核心方法与细节。 一、禁止对象创建(n0) 若类不应产生任何对象&#xff…

在系统设计中,我们常需限制某些类的对象数量(如单例模式、资源受限场景)。本文结合《More Effective C++》条款26,剖析C++中实现该需求的核心方法与细节。

一、禁止对象创建(n=0)

若类不应产生任何对象,直接将 构造函数和拷贝构造函数声明为private,阻止外部调用:

class NoInstances {
private:NoInstances();               // 私有默认构造NoInstances(const NoInstances&); // 私有拷贝构造
};

二、单例模式(n=1):唯一实例的经典实现

核心思路

通过 私有构造 + 静态函数返回唯一实例,确保全局仅一个对象。关键依赖 函数内的静态对象(而非类内静态对象):

class Printer {
public:static Printer& thePrinter() { static Printer p; // 函数内静态对象,首次调用时构造return p; }
private:Printer() = default;                  // 私有构造Printer(const Printer&) = delete;    // 禁止复制
};
细节优化
  1. 命名空间隔离:避免全局命名冲突:

    namespace Printing {class Printer { /*...*/ }; Printer& thePrinter() { static Printer p; return p; }
    }
    // 使用:Printing::thePrinter().reset();
    
  2. 函数内静态的优势

    • 类内静态对象在程序启动时构造(即使未使用),而函数内静态对象仅在首次调用时构造,符合“零代价”原则。
    • 类内静态对象的初始化顺序跨编译单元无保证(条款E47),函数内静态更安全。
  3. 避免内联陷阱
    thePrinter被声明为inline,内部静态对象可能在多编译单元中复制,导致多实例问题。因此,非成员函数版本切勿inline

三、对象计数法(灵活控制数量)

通过类内静态变量计数,构造时检查数量,超过则抛异常:

class Printer {
public:struct TooManyObjects {}; // 异常类Printer() {if (numObjects >= 1) throw TooManyObjects(); // 限制为1个++numObjects;}~Printer() { --numObjects; }
private:static size_t numObjects; // 计数Printer(const Printer&) = delete; // 禁止复制
};
size_t Printer::numObjects = 0; // 定义类静态变量
致命缺陷:继承与内嵌干扰

派生类(如ColorPrinter)或包含Printer的类(如CPFMachine)构造时,基类或内嵌的Printer构造会触发计数检查,导致误抛异常。

四、伪构造函数:灵活控制对象生灭

结合私有构造 + 静态伪构造函数,既控数量,又允许对象创建/销毁(同一时间不超量):

class Printer {
public:struct TooManyObjects {};static Printer* makePrinter() { if (numObjects >= 1) throw TooManyObjects();++numObjects;return new Printer; }~Printer() { --numObjects; }
private:static size_t numObjects;Printer() = default;Printer(const Printer&) = delete;
};
// 配合智能指针自动销毁
unique_ptr<Printer> p(Printer::makePrinter()); 
优势
  • 仅通过makePrinter创建对象,严格控数;
  • 智能指针(如unique_ptr)自动管理销毁,避免泄漏;
  • 支持“创建→销毁→再创建”的动态场景。

总结

方法适用场景核心特点注意事项
私有构造(n=0)禁止任何对象简单直接-
单例(函数内静态)程序唯一实例延迟构造、线程安全(C++11+)避免内联,命名空间隔离
对象计数法固定最大数量灵活但易受继承/内嵌干扰谨慎处理继承和包含关系
伪构造函数允许对象生灭的限制动态控制,智能指针配合需手动调用伪构造

实现时需关注静态对象初始化、命名冲突、继承陷阱,根据场景选择方案。

(注:代码基于《More Effective C++》条款26,结合现代C++特性优化。)

http://www.dtcms.com/a/603060.html

相关文章:

  • 免费商品交易网站代码下载关键词搜索工具
  • 做个网站要钱吗嘉兴网
  • MySQL: MyISAM与InnoDB存储引擎特性及选型指南
  • 天津制作个人建站淘宝客网站怎么做分销
  • 网站内优化怎么做推广策略都有哪些
  • 代码生成工具Trae中的 “Builder模式”
  • 做网站用什么云服务器吗东莞住房城乡建设部官网
  • 江西省建设厅网站资质升级查询做网站美工工资多少钱
  • 站长工具seo综合查询下载安装ppt模板免费下载完整版免费简约
  • 【AI学习】关于大模型发展的一些话语
  • 宁波网站建设 慕枫科技网页编辑工具2022
  • 常用网站如何在桌面做快捷方式网站备案域名需要解析到备案服务器吗
  • SAP FICO模具材料付款清单
  • 进程调度的基本过程
  • C语言编译器电脑版 | 提升C语言开发效率,轻松调试程序
  • 企业网站 开源php雄安优秀网站建设方案
  • Python趣味算法:爱因斯坦的数学题:用Python解决经典阶梯问题
  • 我爱学算法之—— 链表
  • C++11:引用折叠,完美转发,可变参数模板,defult和delete,final和override,委托构造函数,继承构造函数
  • Datawhale25年11月组队学习:hello-agents+Task2
  • 怎么用php源代码做网站私人网页服务器
  • 天台网站建设题库网站怎样做
  • 如何制作一个php网站源码网上商店的业务流程
  • 网站开发 微信 支付召开网站群建设通知
  • JPA 数据绑定通过 **注解映射** 实现对象与表的关联
  • VSCode编译C语言 | 高效配置与运行步骤指南
  • 怎么建立一个网站放图片夸克浏览器官网入口
  • PPT插入的图片太大了,怎么缩小一点?
  • 网站社区建设公司网站做的好的公司
  • 石家庄建网站挣钱优帮云温州建设集团网站