1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <iostream> using namespace std; template <class T> class Base { public: void set(int n){m_data = n;} int get(){return m_data;} private: int static m_data; }; template <class T> int Base<T>::m_data = 0; class Derived1: public Base<Derived1>{}; class Derived2: public Base<Derived2>{}; int main() { Derived1 D1; Derived2 D2; D1.set(1); D2.set(2); cout<<D1.get()<<ends<<D2.get()<<endl;//~ 输出1 2 return 0; } |
其实,这只是一个小把戏,用不同类型实例化后的类完全是两个类型了,当然会拥有不同的静态成员!
