生手搞不懂template

新手搞不懂template
#include<iostream>
//
#include<cstdlib>
using namespace std;

template<typename T>
class Student
{
public:
Student(int i,char *n,int a,char *s){
    id=i;
                    name=*n;
                    age=a;
                    sex=*s;
                             };
~Student();
void get_stu_info(int i,char *n,int a,char *s);
int show_stu_info();
private:
int id;
char name[15];
int age;
char sex[5];

};

template<typename T>
Student<T>::~Student()
{
cout<<"destructor called"<<endl;
}
template<typename T>
void Student<T>::get_stu_info(int i,char *n,int a,char *s)
{
id=i;

*name=*n;
age=a;
*sex=*s;
}
template<typename T>
int Student<T>::show_stu_info()
{
cout<<"id:"<<id;
cout<<"name"<<name;
cout<<"age:"<<age;
cout<<"sex:"<<sex<<endl;
return 0;
}
int main()
{
Student<int> stu;
stu.get_stu_info(1,"Learner",22,"male");
stu.show_stu_info();
return 0;

}

这个错误没弄明白,为什么我声明一个对象,它却认为是个函数呢?
error: no matching function for call to `Student<int>::Student()'|
c++  template 

------解决方案--------------------

Student<int> stu(1,"Learner",22,"male");  构造函数不匹配
还有个错,你构造函数初始化不对,把get_stu_info这个函数内容,copy过来。

------解决方案--------------------
没有无参构造函数

编译错误提示很明显了