C++基础——类模板详解

C++模板——类模板

C++中模板类的定义方法

template
class 类模板名{
成员变量和成员函数
};

类模板中成员函数放在模板类外面定义语法:

template <类型参数表>
返回值类型 类模板名<类型参数名列表>::成员函数名(参数表)
{

}

用类模板定义一个对象写法如下:

类模板名<真实参数类型表> 对象名(构造函数实际参数表);
类模板名<真实参数类型表> 对象名;

实例如下:

#include 
#include
using namespace std;
template <class T1,class T2>
class Student{
    public:
        T1 id;//学号
        T2 name;//名字
        Student(T1 i,T2 n):id(i),name(n){};//初始化成员列表
        bool operator<(const Student<T1,T2>& p) const;//声明成员函数
template <class T1,class T2>//类模板成员函数放在模板类外面定义
bool Student<T1,T2>::operator<(const Student<T1,T2>&p)const{

    return key<p.key;
}
int main()
{
    Student<int,string>student(1,"Alen");
    cont<<student.name<<" "<<student.id;
    return 0;

}

程序输出结果:

Alen 1

由以上程序我们可以看出,当实例化对象时,出入实参1和“Alen”,这时函数模板的参数类型T1被int类型替代,T2被string类型替代。

函数模板作为类模板的成员

类模板中的成员函数还可以是一个函数模板,只有这个成员函数被调用的时候才会被实例化。

template<class T>
class A{
    public:
        template<class T2>
        void Fun(T2 t){ cout<<t};
};
int main(){
    A<int>a;
    a.Fun("haha");
    a.Fun("come");

}
    

函数输出:

hahacome

你可能感兴趣的:(C++,c++)