C++类模板简介
2018-06-17 21:20:52来源:未知 阅读 ()
类模板:
是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。
------百度百科
? 格式:
类模板的写法:
template <class 类型参数1,class 类型参数2,...> //类型参数表
class 类模板名 {
成员函数和成员变量
};
类模板里成员函数的写法:
template <class 类型参数1,class 类型参数2,...> //类型参数表
返回值类型 类模板名 <类型参数名列表>::成员函数名(参数表) {
......
}
用类模板定义对象的写法:
类模板名 <真实类型参数表> 对象名(构造函数实参表)
1 #include <iostream>
2 #include <string>
3 using namespace std;
4 template <class T1, class T2>
5 class Pair {
6 public:
7 T1 key; //关键字
8 T2 value; //值
9 Pair(T1 k, T2 v):key(k), value(v) { };
10 bool operator < (const Pair<T1, T2> & p) const;
11 };
12 template <class T1, class T2>
13 bool Pair<T1, T2>::operator <(const Pair<T1, T2> & p) const {
14 //Pair的成员函数 operator <
15 return key < p.key;
16 }
17 int main(void)
18 {
19 Pair<string, int> student("Tom", 19);
20 //实例化一个类 Pair<string, int>
21 cout << student.key << ends << student.value <<endl; //output:Tom 19
22 return 0;
23 }
? 编译器由类模板生成类的过程叫类模板的实例化。由类模板实例化得到的类,叫模板类。
? 同一个类模板的两个模板类是不兼容的
Pair <string, int> * p;Pair <string, double> a;p = & a; //wrong
? 函数模板作为类模板成员
1 #include <iostream>
2 using namespace std;
3 template <class T> //类模板
4 class A {
5 public:
6 template <class T2> //成员函数模板
7 void Func(T2 t) {
8 cout << t;
9 }
10 };
11 int main(void)
12 {
13 A<int> a;
14 a.Func('K'); //成员函数模板Func被实例化
15 a.Func("hello"); //成员函数模板Func再次被实例化
16 return 0;
17 } //output:Khello
? 类模板的“<类型参数表>”中可以出现非类型参数
template <class T, int size>
class CArray {
private:
T array[size];
......
};
CArray <double, 40> a2;
CArray <int, 20> a3; //a2和a3属于不同的类
2018-01-25 15:13:22
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash