程序设计实习:7.3类模板
对于这些数组类:
除了元素的类型不同之外, 其他的完全相同 类模板
在定义类的时候给它一个/多个参数
这个/些参数表示不同的数据类型 在调用类模板时, 指定参数, 由编译系统根据参数提供 的数据类型自动产生相应的模板类
类模板的定义 C++的类模板的写法如下:
template <类型参数表> class 类模板名 { 成员函数和成员变量 }; 类型参数表的写法就是: class 类型参数1, class 类型参数2, …
类模板里的成员函数, 如在类模板外面定义时, template <型参数表> 返回值类型 类模板名<类型参数名列表>::成员函数名(参数表) { …… }。
用类模板定义对象的写法如下: 类模板名 <真实类型参数表> 对象名(构造函数实际参数表); 如果类模板有无参构造函数, 那么也可以只写: 类模板名 <真实类型参数表> 对象名;
使用类模板声明对象 编译器由类模板生成类的过程叫类模板的实例化 :
编译器自动用具体的数据类型 替换类模板中的类型参数, 生成模板类的代码 由类模板实例化得到的类叫模板类 。
为类型参数指定的数据类型不同, 得到的模板类不同。
使用类模板声明对象 同一个类模板的两个模板类是不兼容的 Pair* p; Paira; p = & a; //wrong 。
类模板与非类型参数 类模板的参数声明中可以包括非类型参数 template
非类型参数: 用来说明类模板中的属性
类型参数: 用来说明类模板中的属性类型, 成员操作 的参数类型和返回值类型
类模板与非类型参数:
类模板与非类型参数 CArraya2; CArraya3;
注意: CArray和CArray完全是两个类 这两个类的对象之间不能互相赋值。
类模板与继承 类模板派生出类模板 :模板类 (即类模板中类型/非类型参数实例化后的类) 派生出类模板 普通类派生出类模板 模板类派生出普通类。
(1) 类模板从类模板派生:
(2) 类模板从模板类派生:
templateclass A { T1 v1; T2 v2; }; templateclass B:public A{ T v; }; int main() { Bobj1; return 0; } 自动生成两个模板类:A和B
(3) 类模板从普通类派生:
class A { int v1; }; templateclass B:public A { T v; }; int main() { Bobj1; return 0; }
(4)普通类从模板类派生:
templateclass A { T v1; int n; }; class B:public A{ double v; }; int main() { B obj1; return 0; }
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.