《Effective C++》- Scott Meyers著,侯捷译。
条款 01: View C++ a federation of languages.
【C / Object-Oriented C++ / Template C++ / STL】四部分组成了C++语言联邦。 C++ 高效编程守则视状况而变化,取决于你是用C++的哪一个部分。
四种次语言
- C
C是C++的基础。C的局限:没有模板(templates),没有异常(exception是),没有重载(overloading)…… - Object-Oriented C++
面向对象之古典守则在C++上的最直接实施。classes,封装(encapsulation)、继承(inheritance)、virtual 函数(动态绑定)…… - Template C++
C++ 的泛型编程(generic programing)部分。=> 模板元编程(TMP,template metaprograming)。TMP相关规则很少与C++主流编程互相影响。 - STL
一个template 程序库。对容器(container)、迭代器(iterators)、算法(algorithms)、函数对象(function objects)的规约有极佳的紧密配合和协调。
pass-by-value vs pass-by-reference
- C 次语言内,pass-by-value 通常比 pass-by-reference 高效。
- OO/template C++ 中,pass-by-reference-const 往往更好。
- STL 中,由于迭代器和函数对象都是在C指针之上塑造出来的,所有此时 pass-by-value 通常更好。
more …