Effective C++读书笔记之一:视C++为一个联邦

                                    Item 01: View C++ as a federation of languagea

本章作者将C++分为4个主要的次语言,而这也是我们要理解C++所必须掌握的。

1.C。说到底C++仍是以C为基础。区块、语句、预处理器、内置数据类型、数组、指针等等统统来自C。 许多时候C++对问题的解法其实不过就是较高级的C解法, 但当你以C++内的C成分工作时,高效编程守则则映照出C语言的局限: 没有模板(templates)、没有异常(exception)、没有重载(overloading)。
 2. Object-Oriented C++ 。这部分也就是C With Classes 所诉求的:class(包含构造函数和析构函数),封装、继承、多态、virtual函数等等。
 3.Template C++。这是C++的泛型编程部分,也是大部分程序员经验最少的部分。
 4.STL。STL对容器、迭代器、算法以及函数对象的规约有极佳的紧密配合与协调。STL有自己特殊的办事方式,所以当你使用STL,必须遵守它的规约。

//云风评注:在某些C++教材上,反复强调不要把C++当成C使用,在某种意义上说没错。但只使用C++的一部分——只是C的部分,仅仅利用C++的改进来弥补C的一些缺陷,在工程实践中也是个不错的方案。如何使用C++最好,仅取决于你的开发团队怎样定义你们使用的C++,并且是否全部认同。Google在这一点上做得很好,在网上流传着Google发布的C++编码规范,建议大家看一看。//

记住这四个次语言,当你从某个次语言切换到另一个,导致高效编程守则要求你改变策略时,不要感到惊讶。例如对内置(也就是C-like)类型而言pass-by-value通常比pass-by-reference更高效。但当你从C part of C++移往Objected-Oriented C++,由于用户自定义构造函数和析构函数的存在,pass-by-reference-to-const往往更好。一旦你跨入STL你就会了解,迭代器和函数对象都是在C指针之上塑造出来的,所以对STL的迭代器和函数对象而言,旧式的C pass-by-value守则再次适用。

请记住:C++高效编程守则视状况而变化,取决于你使用C++的哪一部分。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值