文章标题

来源:互联网 发布:微信一键加人软件 编辑:程序博客网 时间:2024/06/04 17:48

C++模板自己学习

在学习c++模板的时候,我们涉及到过向量的模板vector<int> vec,这其实是已经定义好的类模板,我们拿来直接用,进行类模板的实例化,得到了vec的对象。但是为了增加语言的灵活性,c++支持用户自定义模板,实现封装。

模板是一种对类型进行参数化的工具。

通常有两种形式:函数模板类模板

使用模板的目的就是能够让程序员编写与数据类型无关的代码。

1. 函数模板格式

template<typename T> 函数返回值类型 函数名称 (函数参数列表)
{
函数体;
};
注意:T只是类型形参,在模板函数被调用的时候会把实际的数据类型传递给模板中的形参。
举个例子:

template<typename T> T func(T a,T b){       T temp;    if(a>b)    {        temp = a;        cout << temp << endl;    }}调用函数func()的时候,func(2,3),这个时候会把int类型的实参传递给模板中的形参。从而实现函数的封装,实现函数的定义和数据类型无关。

2. 类模板的一般格式

Template<typename T> class 类名{...};
其中T只是自己取得形参的名称,没有实际意义。
举个例子:

Template<class T> class A{public:     T a;      T b;      T func(T c, T &d);  };

那么现在问题来了,怎么调用,对于函数而言我们说函数的调用,但是对于类而言我们一般说实例化,那么怎么实例化呢,同样可以参考vector<>模板的用法,即是在实例化的时候进行实际的类型参数的传递。例如vector<int> veec其中int是传递过去的实际类型参数。

其他的问题参考一下别人的博客。如下