基本语言细节--《The C++ Programming Language 》--(1)开辟鸿蒙
1.语言磨砺了我们思维的方式,也决定着我们思考的范围。--B.L.Whort;
2.C++能干什么?它是一门通用程序设计语言,特别是面向系统程序设计,一个更好的C,支持数据抽象,面向对象程序设计,通用型程序设计(泛型编程)。
3.C++设计原则:
简单,高效,与C的兼容性,类型检查与数据隐藏特征依赖于编译时对程序的分析;
4.C++借鉴:站在巨人的肩膀上
C,BCPL,Algol68(运算符重载),Simula67(类),Ada(类属机制启发诞生的模板机制)等!
5.给C程序员的建议:
(1).在C++里几乎不需要用宏,可以用const,inline,template;
(2).不要使用malloc(),new运算符可以做得更好;
(3).避免使用void*,指针算术,联合,强制;
(4).少使用数组和C风格的字符串;标准库string和vector简化程序设计,这二者皆是对象!
6.忠告:
[1]在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反映这些思想:
[a] 如果你能把“它”看成一个独立的概念,就把它做成一个类。
[b] 如果你能把“它”看成一个独立的实体,就把它做成某个类的一个对象。
[c] 如果两个类有共同的界面,将此界面做成一个抽象类。
[d] 如果两个类的实现有某些显著的共同东西,将这些共性做成一个基类。
[e] 如果一个类是一种对象的容器,将它做成一个模板。
[f] 如果一个函数实现对某容器的一个算法,将它实现为对一族容器可用的模板函数。
[g] 如果一组类、模板等互相之间有逻辑联系,将它们放进一个名字空间里。
[2]在你定义一个并不是实现某个像矩阵或复数这样的数学对象的类时,或者定义一个低层的类型如链接表的时候:
[a] 不要使用全局数据(使用成员)。
[b] 不要使用全局函数。
[c] 不要使用公用数据成员。
[d] 不要使用友元,除非为了避免[a]或[c]。
[e] 不要在一个类里面放“类型域”;采用虚函数。
[f] 不要使用在线函数(inline function),除非作为效果显著的优化。
卧浪居士 于HUST2013.11.28