4.4类中类用法 在类定义中,有时需要用抽象数据类型,类对象嵌套也是通常使用的形式。这里讨论的 是类中类和类属类问题,重点是一个类的内部对象的初始化问题。 4.4.1类对象作为成员 在C++中,对于作为成员的类对象,必须说明成员对象的初始化 例4.7以其他类的对象作为数据成员构造新类的实例EX4_7CPP 4.4.2类的自引用 C++的类包含了指向自己的特殊指针ths(自引用)。Ths是一个隐含指针,类的成员 函数自动将指针this传递给对象,从而产生成员函数的调用动作 例如:ob, funcO, 函数 funco自动将this传递给ob,ob产生函数调用。 This指针是指向成员函数所属类定义的对象。因此,用this可指向该类的不同对象不同 成员。这是程序在类范围中可以用简写形式的原因。但应该清楚其隐含的实际操作。 一般地,this是由编译器自动产生、使用的。设计人员也使用它,可引用到对象的任何 成员(非静态成员),this指针有多种用途。在缺省状态下,所有成员函数都自动传递一个 指针给激活它的对象。 [例4.7a]使用this指针的实例EX47aCPP。 4.4.3类属类( generic class) 当一个类包含有通用的逻辑算法时,定义一个类属类,即是定义这个类的所有算法。而 实际操作数据的类型是在创建类对象时,以参数形式指定的 说明类属类的一般格式为: template class class name( / Itype是临时类型名 下面的程序定义了一个类属链表类,然后生成一个字符链表,说明该类的算法。 例4.8]类属类的使用实例EX48CPP 如果在创建lst对象时改变指定的数据类型,就可以改变表中存储的数据类型,例如: listint start(1) 用户也可以用list存放自己定义的数据类型
4.4 类中类用法 在类定义中,有时需要用抽象数据类型,类对象嵌套也是通常使用的形式。这里讨论的 是类中类和类属类问题,重点是一个类的内部对象的初始化问题。 4.4.1 类对象作为成员 在 C++中,对于作为成员的类对象,必须说明成员对象的初始化。 [例 4.7] 以其他类的对象作为数据成员构造新类的实例 EX4_7.CPP 4.4.2 类的自引用 C++的类包含了指向自己的特殊指针 this(自引用)。This 是一个隐含指针,类的成员 函数自动将指针 this 传递给对象,从而产生成员函数的调用动作。 例如:ob.func(); 函数 func()自动将 this 传递给 ob,ob 产生函数调用。 This 指针是指向成员函数所属类定义的对象。因此,用 this 可指向该类的不同对象不同 成员。这是程序在类范围中可以用简写形式的原因。但应该清楚其隐含的实际操作。 一般地,this 是由编译器自动产生、使用的。设计人员也使用它,可引用到对象的任何 成员(非静态成员),this 指针有多种用途。在缺省状态下,所有成员函数都自动传递一个 指针给激活它的对象。 [例 4.7a] 使用 this 指针的实例 EX4_7a.CPP。 4.4.3 类属类(generic class) 当一个类包含有通用的逻辑算法时,定义一个类属类,即是定义这个类的所有算法。而 实际操作数据的类型是在创建类对象时,以参数形式指定的。 说明类属类的一般格式为: template class class_name{ . . . }//Ttype 是临时类型名 下面的程序定义了一个类属链表类,然后生成一个字符链表,说明该类的算法。 [例 4.8] 类属类的使用实例 EX4_8.CPP 如果在创建 list 对象时改变指定的数据类型,就可以改变表中存储的数据类型,例如: listint_start(1); 用户也可以用 list 存放自己定义的数据类型