标签:
1 template <class C>//模板形式,C是一个类型名字,不一定是某个类的名字 2 class String{ 3 struct srep; 4 srep *rep; 5 public: 6 String(); 7 String(const C*); 8 String(const String&); 9 10 C read(int i)const; 11 };
String <char > cs;//这些是使用的方法,模板的一些定义 String <unsigned char> us; String <wchar_t>ws; class Jchar{ }; String <Jchar>js;
标准库里面有一个base_string模板,很像string模板,所以把前者也是定义为string的同义词:typedef base_string<char>string;
template <class C> struct String<C>::srep{ C *s;//到元素的指针 int sz;//元素个数 int n;//引用计数 } template <class C> C String <C> ::read(int i)const{return rep->s[i];}
String <char> cs;//这里生成了两个类,cs和js,以及他们的析构和构造函数 void f(){ String<Jchar> js; }
标签:
原文地址:http://www.cnblogs.com/Kobe10/p/5558469.html