- Object Based:面对的是单一class的设计;Object Oriented:面对的是多重classes的设计,classes和classes之间的关系。
- class 前向声明,声明,定义。
- 函数若在class body中定义完成,便自动成为inline函数。如果函数太复杂就不会成为inline。
- overload的函数编译之后签名不同。虽然参数列表不同,可以重载,但是参数列表有默认值,可能会与没有参数的版本歧义,不能重载。
- 非const对象可以调用const成员函数,const对象只能调用const成员函数。
- 封装是对类而言,不是对对象而言。同一个class的对像互为friends。
- 成员函数和全局函数的选择,<<重载只能是全局非成员函数。输出流是ostream对象
- class 设计分布如下
#ifndef _String_ #define _String_ class String{ ... }; String::function(...)... Global-function(...)... #endif
- class with pointer members 必须有copy ctor 和 copy op=。
- new:先分配内存,再调用构造函数。
- delete:先调用dtor,再释放memory。
- new delete 分配释放的内存,实际使用的就是malloc free。
- 为什么new [] 要搭配 delete[]