天天看点

读书笔记MoreEffectiveC++(26)

限制某个类所能产生的对象数量

1.阻止建立某个类的对象,最容易的方法就是把该类的构造函数声明在类的private域

2.这个设计由三个部分组成,第一、Printer 类的构造函数是private。这样能阻止建立对象。第二、全局函数thePrinter 被声明为类的友元,让thePrinter 避免私有构造函数引起的限制。最后thePrinter 包含一个静态Printer 对象,这意味着只有一个对象被建立。

3.任何能在全局域声明东西也能在命名空间里声明。包括类、结构、函数、变量、对象、typedef 等等。把它们放入命名空间并不影响它们的行为特性,不过能够防止在不同命名空间里的实体发生命名冲突。

4.在类中的静态对象实际上总是被构造(和释放),即使不使用该对象。与此相反,只有第一次执行函数时,才会建立函数中的静态对象,所以如果没有调用函数,就不会建立对象。

5.:“带有内部链接的函数可能在程序内被复制(也就是说程序的目标(object)代码可能包含一个以上的内部链接函数的代码),这种复制也包括函数内的静态对象。”结果如何?如果建立一个包含局部静态对象的非成员函数,你可能会使程序的静态对象的拷贝超过一个!所以不要建立包含局部静态数据的非成员函数。

继续阅读