码迷,mamicode.com
首页 > 编程语言 > 详细

C++学习与总结2

时间:2016-07-10 23:07:34      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

一. 模板定义

在C++中,模板是泛型编程的基础,它还是创建类或函数的蓝图或公式。

1. 函数模板

首先,我们定义一个函数模板,如下所示:

1 // returns 0 if the values are equal, 1 if v1 is larger, -1 if v1 is smaller
2 template <typename T>
3 int compare(const T &v1, const T &v2) {
4     if(v1 < v2) return -1;
5     if(v1 > v2) return 1;
6     return 0;
7 }

(1)模板形参表

解析:模板形参可以是表示类型的类型形参,也可以是表示常量表达式的非类型形参。

(2)实例化模板函数

解析:编译器能够确定用什么类型代替每个类型形参,以及用什么值代替每个非类型形参。推导出实际模板实参后,编译器使用实参代替相应的模板形参产生并编译该版本的函数。

(3)inline函数模板

1 template <typename T> inline T min(const T&, const T&)

解析:需要说明的是inline放在模板形参后,返回类型前。

2. 类模板

首先,我们定义一个类模板,如下所示:

 1 template <class Type> class Queue {
 2 public:
 3     Queue(); // 默认构造函数
 4     Type& front(); // 返回队头元素的引用
 5     const Type& front() const;
 6     void push(const Type&); // 在队尾增加一项
 7     void pop(); // 从队头删除一项
 8     bool empty() const; // 指出队列中是否有元素
 9 
10 private:
11     // ...
12 }

当我们使用类模板时,必须显示指定实参,比如Queue< vector<double> > qc; 那么Queue中Type的实际类型为vector<double>。

说明:像通常的函数或类一样,我们可以仅对函数模板或类模板进行声明操作而不进行定义操作。

 

参考文献:

[1] C++ Primer(第4版)

C++学习与总结2

标签:

原文地址:http://www.cnblogs.com/shengshengwang/p/5658613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!