#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
//函数指针做函数参数
using namespace std;
//单个类的基本模板
template <typename T>
class A{
private :
T a;
public :
A(T a=0){
this->a=a;
cout<<a<<endl;
}
void print(){
cout<<"aprint"<<endl;
}
};
template <typename T>
class B:public A<T>{//类模板派生类模板 .需要指定T
private :
T b;
public :
B(T b,T a):A<T>(a){
this->b=b;
cout<<b<<endl;
}
};
void userplay(A<int> &a){//模板参数做形参 。要求具体的类。
a.print();
}
int main(){
A<int>a(20);
a.print();
userplay(a);
B<int> b(10,20);
}
模板类在做为父类继承时需要指明类型,不然C++编译器不知道怎么分配内存。class A:public A<int>
类模板中的static关键字的应用
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
//函数指针做函数参数
using namespace std;
//类模板中的static关键字
template <typename T>
class A{
public :
static T a;
A(T a){
this->a=a;
}
void getA(){
cout<<a<<endl;
}
};
template <typename T>//关键理解C++的编译器,在需要调用时给你分配空间合适的内存合适的模板。
T A<T>::a=0;
int main(){
A<int> a(20);
a.getA();
A<char> b('a');
b.getA();
}