² 构造函数:提供的一个或多个特别的初始化函数
构造函数的名称必须与class的名称相同。语法规定,构造函数不应指定返回型别,亦不需要返回任何值。它可以被重载。传参见P105
² 成员初始化表
Triangular::Triangular( const Triangular &rhs )
: _length ( rhs._length ),
_beg_pos (ths._beg_pos ), _next ( rhs._beg_pos-1 )
{ }
成员初始化表紧跟在参数表后面的冒号后,以逗号分隔,欲赋值给成员的数值被放于成员后的小括号中。
² 析构函数是用户自定义的一个classmember。一旦某个类提供了析构函数,当其objects结束生命时,便会自动调用析构函数处理善后。析构函数主要用来释放在构造函数或对象生命周期中的配置资源。
析构函数的名称有严格规定:class名称再加上'~'前导符号。它绝对不会有返回值,也没有任何参数。由于其参数表是空的,所以也绝对不可能被重载。
² const修饰词紧接于函数参数表之后,凡是在class主体以外的定义者,如果它是一个const member function,那就必须同时在声明式与定义式中都指定const
² 将类中的参数定义为mutable,可视为对该参数的改变不会破坏该对象的常数性
² this指针在member function内用来寻址其调用者(一个对象)。编译器自动将this指针加到每一个member function的参数表中。
² 静态类成员:staticdata member用来表示唯一一份可共享的members。它可以在同型的所有对象中被存取。
² 静态成员函数:staticmember function,可以在“与任何对象都无瓜葛”的情形下被调用。注意,member function只有在“不存取任何non-static members”的条件下才能够被声明为static,声明方式是在声明式之前加上static
² 实现iteratorclass:我们采用像定义member function那样的形式来定义运算符。运算符函数看起来很像普通函数,唯一的不同在于它不需要制定名称,只需在运算符符号之前加上关键词operator即可:
Triangular_iterator &operator++();
² typedef可以为某个型别设定另一个不同的名称,其通用形式为:
typedef existing_name new_name;
² 友元friend:具备了与classmumber function相同的存取权限,可以存取class的private member。为了让operator*()通过编译,不论Triangular或Triangular_iterator都需要将operator*()声明为“友元”:
friend int operator*( const Triangular_iterator&rhs );
我们也可以令类A和类B建立友元关系,借此让类A的所有成员函数都成为类B的朋友:
class Trigular {
friendclass Tgriangular_iterator;
};