类的static成员,属于类,而不属于对象,因此,每一个类的对象都可以使用,使用模板改变这一特性。
代码如下:
vs2008
#
include <iostream>
using namespace std;
template < class T >
class Base {
public :
static int count;
Base();
};
template < class T >
int Base < T >:: count = 1 ;
template < class T >
Base < T >:: Base() {
cout << count << endl;
count ++ ;
}
template < class T >
class Derived1 : public Base < T > {
};
class Derived2 : public Base < Derived2 > {
};
int _tmain( int argc , _TCHAR * argv[])
{
Base < int > t[ 10 ];
Base < int > t1[ 10 ];
Derived1 < Derived1 < int >> a[ 10 ];
Derived2 b[ 10 ];
return 0 ;
}
using namespace std;
template < class T >
class Base {
public :
static int count;
Base();
};
template < class T >
int Base < T >:: count = 1 ;
template < class T >
Base < T >:: Base() {
cout << count << endl;
count ++ ;
}
template < class T >
class Derived1 : public Base < T > {
};
class Derived2 : public Base < Derived2 > {
};
int _tmain( int argc , _TCHAR * argv[])
{
Base < int > t[ 10 ];
Base < int > t1[ 10 ];
Derived1 < Derived1 < int >> a[ 10 ];
Derived2 b[ 10 ];
return 0 ;
}
输出结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10