类模版中声明static成员
templateclass Foo{ public: static size_t count() { ++ctr; cout << ctr << endl; return ctr; } private: static size_t ctr;};
类模版Foo中static的成员变量ctr和成员函数count()。
类模版static成员变量的初始化
templatesize_t Foo ::ctr = 0; //类外
类模版Foo每次实例化表示不同的类型,相同类型的对象共享一个static成员。因此下面f1、f2、f3共享一个static成员,f4、f5共享一个static成员
Foo f1, f2, f3;Foof4, f5;
访问static成员
f4.count(); //通过对象访问f5.count();Foo::count(); //通过类作用操作符直接访问
完整代码
#includeusing namespace std;template class Foo{ public: static size_t count() { ++ctr; cout << ctr << endl; return ctr; } private: static size_t ctr;};template size_t Foo ::ctr = 0;int main(){ Foo f1, f2, f3; f1.count(); f2.count(); f3.count(); Foo f4, f5; f4.count(); f5.count(); Foo ::count();}
运行结果
123123