<pre name="code" class="cpp">#include <iostream>
using namespace std;
template<typename T>
class Object
{
public:
void f(T t = 0){
cout << t << endl;
}
virtual ~Object(){
cout << "Object released" << endl;
}
};
class Sub:public Object<int>
{
public:
~Sub(){
cout << "Sub released" << endl;
}
};
class SubSub:public Sub
{
public:
~SubSub(){
cout << "SubSub released" << endl;
}
};
template<>
class Object<double>
{
public:
void f(double t){
cout << t << endl;
}
};
/*
class Object{
public:
void f(int t){
cout << t << endl;
}
};
*/
int main(int argc, char *argv[])
{
SubSub s;
s.f(100);
Object<double> o;
o.f(99.9);
return 0;
}
100
99.9
SubSub released
Sub released
Object released