More Effective C++:5、技术

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_30534935/article/details/102547976

本书涉及的大多数内容都是编程的指导准则。这些准则虽是重要的,但是程序员不能单靠准则生活。有一个很早以前的卡通片叫做 “菲利猫” (Felix the Cat),菲利猫无论何时遇到困难,它都会拿它的 trick 包。如果一个卡通角色都有一个 trick 包,那么 C++ 程序员就更应该有了。把这一章想成你的 trick 包的启动器。


当设计 C++ 软件时,总会再三地受到一些问题的困扰。你如何让构造函数和非成员函数具有虚拟函数的特点?你如何限制一个类的实例的数量?你如何防止在堆中建立对象呢?你如何又能确保把对象建立在堆中呢?其它一些类的成员函数无论何时被调用,你如何能建立一个对象并让它自动地完成一些操作?你如何能让不同的对象共享数据结构,而让每个使用者以为它们每一个都拥有自己的拷贝?你如何区分 operator[] 的读操作和写操作?你如何建立一个虚函数,其行为特性依赖于不同对象的动态类型?


所有这些问题 (还有更多) 都在本章得到解答,在本章里我叙述的都是 C++ 程序员普遍遇到的问题,且解决方法也是已被证实了的。我把这些解决方法叫做技巧,不过当它们以程式化的风格 (stylized fashion) 被归档时,也被做为 idiom 和 pattern。不管你把它称做什么,在你日复一日地从事软件开发工作时,下面这些信息都将使你受益。它会使你相信无论你做什么,总可以用 C++ 来完成它。



条款25:将 constructor 和 non-member functions 虚化



条款26:限制某个 class 所能产生的对象数量



条款27:要求(或禁止)对象产生于 heap 之中



条款28:Smart Pointers(智能指针)



条款29:Reference counting(引用计数)



条款30:Proxy classes(替身类、代理类)



条款31:让函数根据一个以上的对象类型来决定如何虚化

猜你喜欢

转载自blog.csdn.net/qq_30534935/article/details/102547976
今日推荐