Виртуальные классы дают вам во время выполнения то, что шаблоны дают вам во время компиляции .. вроде.
Код шаблона при написании не является реальным кодом, а просто шаблоном, который можно использовать для генерации кода. Каждый раз, когда вы используете его ... обычно он генерирует код прямо здесь. например.
Z<int, std::string> z; // At this point a new class called Z<int, std::string> is defined, then the code to instantiate it at run time is generated.
Это может быть полезно для чтения: стандартная практика c ++: классы виртуального интерфейса и шаблоны
Может быть, это то, что вы ищете? Подобные вещи, использующие полиморфизм и виртуальные классы ..
class Z{
public:
virtual void doSomething();
};
class ZT : public Z {
public:
void doSomething();
};
class ZA : public Z {
public:
void doSomething();
};
...
void useClasses(Z* ptr) {
ZT* ztPtr = dynamic_cast<ZT*>(ptr); // Runtime conversion
if (ztPtr) {
// do specific stuff for this type
} else {
ptr->doSomething(); // generic behaviour that'll call whichever class ptr actually is
}
}