#include <iostream>
struct A {
char foo() { return 'A';}
};
template<class T> struct B : public T {
virtual char foo() {return 'B';}
};
template<class T> struct C : public T {
virtual char foo() {return 'C';}
};
int main(int argc, char* argv[])
{
A* a = new A();
A* b = new B< A >();
A* c = new C< A >();
A* d = new B< C< A > >();
std::cout << a->foo() << b->foo() << c->foo() << d->foo();
return 0;
}
Войдите чтобы поставить Нравится
Войдите чтобы прокомментировать