- static static函数没有this pointer,static数据只有一份,static函数只能处理static数据。static数据在class外需要提供定义。
- 单例设计
class A{ public: static A& getInstance(); setup() {...} private: A();; A(const A& rhs); ... }; A& A::getInstance() { static A a; return a; }
- 类模版,函数模版,成员模版,C++标准库的算法都是函数模版。
- namespace使用: using directive - using namespace std;using declaration - using std::cout;使用namespace 避免名称重复。
- 构造函数由内而外,析构函数由外而内。
- 组合:对象包含,或者引用包含。has-a关系。
- 继承 is-a关系,子类可以在内存中继承数据,子类继承父类函数的调用权。
- 继承 + 组合:derived构造顺序首先构造base,然后构造component;derived析构先析构自己,然后析构component,然后析构base,观察的结果。
- non-virtual函数:你不希望derived class 重新定义你它;virtual 函数:你希望derived class 重新定义,它已有默认定义;pure virtual 函数:你希望derived class 一定要重新定义,你对它没有默认定义。
- conversion function,类型转换函数。operator type();
- 仿函数:重载了()的类
- 智能指针(pointer-like classes)。
- 迭代器(pointer-like classes)指向,代表容器中的一个元素。
- reference 通常不用于声明变量,而用于参数类型和返回类型的描述。两个函数完全一样,只是const不同,构成重载。