Есть ли преимущества наследования от абстрактного шаблона?
Я имею в виду делать следующее:
template<class Type> class Foo {
public:
... // Code Here.
};
class Bar : public Foo<Type> {
public:
...
};
Где Type при объявлении класса Bar на самом деле является типом (int, bool и т. Д.) Или типом, созданным ранее.
Если этот вопрос слишком расплывчатый или на него уже дан ответ, пожалуйста, дайте мне знать.
1 ответ
Полезна ли языковая функция или нет, зависит от того, как и где вы ее используете. Для наследования от шаблонного абстрактного шаблона, вот один гипотетический сценарий, который я могу придумать, где он может быть полезен.
template <typename Type> class Gadget {
public:
string name() = 0;
};
class SmartPhone : public Gadget<Phone> {
public:
string name() { return "I am a smart phone"; }
};
class SportsCar : public Gadget<Car> {
public:
string name() { return "I am a sports car"; }
};
vector<Gadget*> inventory;
inventory.push_back(new SmartPhone());
inventory.push_back(new SportsCar());
// etc ...
Обратите внимание, что это, вероятно, не лучший способ реализовать это, но я хочу сказать, что вы всегда можете найти какую-то пользу для всего.:)