linux C++ 惊天大发现
namespace templatetest
{
class Base
{
public:
virtual ~Base()
{}
virtual void show() = 0;
};
template<class T>
class A : public Base
{
T str;
public:
A(T v):str(v){}
virtual void show()
{
cout<<str<<endl;
}
};
template<class T>
class B : public A<T>
{
public:
B(T v):A(v)
{}
};
class C : public B<int>
{
public:
C(int i):B(i){}
};
void test()
{
A<char*> a("abc");
a.show();
B<int> b(123);
b.show();
C c(123);
c.show();
Base *bb = &c;
bb->show();
}
}
namespace templatetest
{
class Base
{
public:
virtual ~Base()
{}
virtual void show() = 0;
};
template<class T>
class A : public Base
{
T str;
public:
A(T v):str(v){}
virtual void show()
{
cout<<str<<endl;
}
};
template<class T>
class B : public A<T>
{
public:
B(T v):A<T>(v)
{}
};
class C : public B<int>
{
public:
C(int i):B<int>(i){}
};
void test()
{
A<char*> a("abc");
a.show();
B<int> b(123);
b.show();
C c(123);
c.show();
Base *bb = &c;
bb->show();
}
}