Ch1
Item 1: View C++ as a federation of languages
- In the beginning, C++ was just C with some oo features tacked on.
 - Become modern
- Exceptions required different approaches to structuring function. [#Item 29]
 - Templates[#Item 41]
 
 - Now C++ is a multiparadigm programming language
- Combination of procedural, oo, functional, generic, and metapgrogramming features.
 
 - View c++ as a federation of related languages.
 - Four subranges
- C
- Builtin data types, pointer, arrays.
 
 - Object-oriented C++
- C tiwh classes.
 - Encapsulation, inheritence, polymorphism, v-function.
 
 - Template C++
- common
 - TMP(Template metaprogramming)
 
 - STL
- A template library.
 
 
 - C
 
Item 2: Prefer consts, enums, inline to #defines
Prefer compiler to preprocesser
- #defines is handled by preprocessor, not compiler.
 
#define can cause problem because it just doing replacement.
- Use const instead
 
2 special cases when using #define
- const pointer
 - const class member
 
use inline instead of #define func
Item3: Use const whenever possible
- mutable variable: use when a const member function need to modify a data member.