落羽怜心 落羽怜心
关注数: 132 粉丝数: 264 发帖数: 50,113 关注贴吧数: 47
《Effective C++》 学习笔记 01:将C++视为一个语言集合 C++中主要的次语言有4个: (1)C。说到底 C++ 仍是以 C 为基础。 区块 (blocks) 、语句(statements) 、预处理器 (preprocessor) 、 内置数据类型 (built-in data types) 、数组 (arrays) 、指针 (pointers) 等统统来自C。C 语言的局限:没有模板(templates), 没有异常 (exceptions) , 没有重载 (overloading) …… (2)Object-OrientedC++。这部分也就是 C with Classes所诉求的: classes (包括构造函数和析构函数), 封装 (encapsulation) 、继承 (inheritance) 、多态(polymorphism) 、 virtual 函数(动态绑定)……等等。这一部分是面向对象设计之古典守则在 C++ 上的最直接实施。 (3)Template C++。这是 C++的泛型编程 (generic programming) 部分, 也是大多数程序员经验最少的部分。 Template 相关考虑与设计已经弥漫整个 C++, 良好 编程守则中 “惟template 适用 ” 的特殊条款并不罕见(例如条款 46 谈到调用 template functions 时如何协助类型转换)。实际上由于templates威力强大, 它们带来崭新的编程范型 (programming paradigm) , 也就是所谓的 template metaprogramming (TMP, 模板元编程)。条款48 对此提供了一份概述,但除非你是 template 激进团队的中坚骨干, 大可不必太担心这些。 TMP 相关规则很 少与C廿主流编程互相影响。 (4)STL。 STL 是个 template 程序库, 看名称也知道,但它是非常特殊的一个。 它对容器 (containers)、迭代器 (iterators) 、算法(algorithms) 以及函数对象 (function objects) 的规约有极佳的紧密配合与协调, 然而 templates 及程序库也可以其他想法建置出来。 STL有自己特殊的办事方式, 当你伙同 STL 一起工作, 你必须遵守它的规约。
1 下一页