读书笔记MoreEffectiveC++(26)

本文介绍通过将构造函数设为私有来限制类实例的数量,并利用全局函数和静态局部对象实现单例模式。同时讨论了命名空间的作用及局部静态对象的复制问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

限制某个类所能产生的对象数量
1.阻止建立某个类的对象,最容易的方法就是把该类的构造函数声明在类的private域
2.这个设计由三个部分组成,第一、Printer 类的构造函数是private。这样能阻止建立对象。第二、全局函数thePrinter 被声明为类的友元,让thePrinter 避免私有构造函数引起的限制。最后thePrinter 包含一个静态Printer 对象,这意味着只有一个对象被建立。
3.任何能在全局域声明东西也能在命名空间里声明。包括类、结构、函数、变量、对象、typedef 等等。把它们放入命名空间并不影响它们的行为特性,不过能够防止在不同命名空间里的实体发生命名冲突。
4.在类中的静态对象实际上总是被构造(和释放),即使不使用该对象。与此相反,只有第一次执行函数时,才会建立函数中的静态对象,所以如果没有调用函数,就不会建立对象。
5.:“带有内部链接的函数可能在程序内被复制(也就是说程序的目标(object)代码可能包含一个以上的内部链接函数的代码),这种复制也包括函数内的静态对象。”结果如何?如果建立一个包含局部静态对象的非成员函数,你可能会使程序的静态对象的拷贝超过一个!所以不要建立包含局部静态数据的非成员函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值