相信很多刚入门c++的同学在学数据结构或者查看大佬的代码中,我们都会看到:
template <typename T>
类模板;
template<typename T>class A {public:……protected:……};
或者:
函数模板:
本文只是简单说明一下我们使用类模板和函数模板需要注意什么如果要详细了解/wanghui1234/p/8846881.html(篇幅有点大):
1.一但声明了模板(template < typename T>
),就可以将类型参数用于类的成员函数和成员变量了。换句话说,原来使用 int、float、char 等内置类型的地方,都可以用类型参数来代替。
如写一个交换函数:
void swap(int &a, int &b){int t = a;a = b;b = t;}void swap(char &a, char &b){char t = a;a = b;b = t;}//template 关键字告诉C++编译器 我要开始泛型了.你不要随便报错 //数据类型T 参数化数据类型template <typename T>void swap(T &a, T &b)//这就是一个模板函数{T t;t = a;a = b;b = t;}
你看,在C中当我们要调用swap(a,b)函数时,如果a,b是int我们要写第一种函数,如果a,b是char我们要写第二种函数,那如果是double,float呢,那我们是不是还要写其他函数,**如果我们用了模板声明template 那么我们不管a,b是什么类型的数据,我们只写一个函数就足以应对了。**即只要写第三个函数就可以了
2.模板分为类模板和函数模板(开头有)。
3.什么是类,你可以简单理解为结构体,因为它们的使用方法差不多。它们唯一的区别就是,结构的默认访问类型是public,而类为private。
4.简单了解:public和protected有什么区别,一句话;我们不用管protected或者其他,我们只认public,用public声明的类型,我们在外部(类外)的可以用“.”直接访问而其它类型不能。
5.模板类就是类加上模板声明template <typename T>
就可以使用了,不管是类模板还是函数模板都和第三点一样。
6.在模板声明:template <typename T>
,中:
templae<类型形式参数表> ,其中类型形式参数表就是template <typename T>
中的T的类型,比如上面的swap()函数的参数类型是一样的那么我们在模板声明时用template <typename T>
即可,如果a,b时不一样的类型时,模板声明template <typename T1,typename T2>.
类也一样。