4. 基于对象的编程风格
4.1 如何实现一个class
1 前置声明使我们得以进行类指针(class pointer)的定义,或以此class作为数据类型.
2 private members 只能在member function或是class friend内被取用.
3 如果要在class 主体内定义, 这个member function会自动被视为inline函数.
4.2 什么是Constructors和Destructors
1 每个class都必须记住他自己的长度和起始位置. 但起始位置不得为零或负值.
2 constructor 不应指定返回型别,亦不需任何返回值. 它可以被重载(overloaded).
最简单的是所谓的default constructor, 它不需要任何arguments. 这意味着: 第一, 它不接受任何参数; 第二,它为每个参数提供了默认值
3 destructor 绝对不会有返回值, 也绝不可能被重载.
4 destructor 并非绝对必要.
5 当我们设计class时, 必须确认, 在此class之上进行"成员逐一初始化的行为模式是否适当? 如果不是, 我们就必须另行定义copy constructor.
4.3 何为mutable和const
1 编译器会检查每个声明为const的member function 看看他们是否真的没有改动class object的内容.
2 member functions 可以根据const 与否而重载.
3 只要将变量标识为mutable, 我们就可以宣称, 对变量所做的改变并不会破坏class object的常数性.
4.4 什么是this指针
欲以一个对象复制出另一个对象,先确定两个对象是否相同是个好习惯.
4.5 Static Class Member
1 const static int 之类的data members, 可以在声明时为他们明白指定初值.
2 static member function 便可以在没有任何对象初始化的情况下被调用. 当在class主体外部进行member function的定义是, 不需要重复加上关键词
static (同样适用于static data member).
4.6 打造一个 Iterator Class
1 运算符函数不需要指定名称, 只需在运算符符号之前加上关键词operator.
2 运算符重载的规则
4.7 合作关系必须建立在友谊的基础上
1 如果希望将数个重载函数声明为某个class的friend, 必须明白的为每个函数加上关键词friend.
2 也可以令class A 与 class B 建立friend关系, 借此让A 所有的member functions 都成为class B 的friend.
4.11 指针:指向Class Member Function
maximal munch原则