template<typename T>//方法模板 T add(T const&a,const T&b){//两个const限定等价 return a+b; }//注意,这里没有分号,因为这是方法 template<typename T>//结构体模板 struct S{ T s; };//注意,这里有分号,因为这是结构体 template<typename T>//类模板 class A{ public: S<T> s;//使用了结构体模板 void set(T s0); };//注意,这里有分号,因为这是类 template<typename T>//实现类里面的方法 void A<T>::set(T s0){//注意这一行的格式 s.s=s0; } //注意,这个方法只有到被使用时才会开始实例化,不过可以显式实例化让它一开始就实例化 int main(){ template A<int>;//显式实例化 template A<double>; int a=1,b=2; double c=3.3; add(a,b);//正确 add(a,c);//错误,模板参数类型是严格匹配的,不可能进行隐式转换 A<int> a;//使用了类模板 a.set(5); cout<<a.s.s;//输出5 }
c++ template 1
最新推荐文章于 2022-08-30 16:27:34 发布