类中类用法
在类定义中,有时需要用抽象数据类型,类对象嵌套也是通常使用的形式。这里讨论的是类中类和类属类问题,重点是一个类的内部对象的初始化问题。
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 Ttype>class class_name{
.,,
}//Ttype是临时类型名下面的程序定义了一个类属链表类,然后生成一个字符链表,说明该类的算法。
[例4.8] 类属类的使用实例EX4_8.CPP
如果在创建list 对象时改变指定的数据类型,就可以改变表中存储的数据类型,例如:
list<int>int_start(1);
用户也可以用list 存放自己定义的数据类型。
在类定义中,有时需要用抽象数据类型,类对象嵌套也是通常使用的形式。这里讨论的是类中类和类属类问题,重点是一个类的内部对象的初始化问题。
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 Ttype>class class_name{
.,,
}//Ttype是临时类型名下面的程序定义了一个类属链表类,然后生成一个字符链表,说明该类的算法。
[例4.8] 类属类的使用实例EX4_8.CPP
如果在创建list 对象时改变指定的数据类型,就可以改变表中存储的数据类型,例如:
list<int>int_start(1);
用户也可以用list 存放自己定义的数据类型。