C++. Наследование. Как сделать статический метод возвращающий оба типа?
Есть класс-предок и его класс-потомок. Надо чтобы у них обоих были методы с одинаковым названием, принимающие строку и в зависимости от того с какого слова она начинается возвращали либо экземпляр предка, либо экземплер потомка. Подскажите синтаксис. Там вроде как-то возвращать указатель на предка надо?
Ответы (1 шт):
Автор решения: gbg
→ Ссылка
Экземпляр вернуть нельзя, можно вернуть только указатель.
class Parent
{
public:
virtual ~Parent() {}
static Parent* test(const std::string& in)
{
return new Parent();
};
};
class Child:public Parent
{
public:
static Parent* test(const std::string& in)
{
return new Child(); //здесь неявно будет приведет тип указателя
};
};
Замечание:
Виртуальный деструктор у родителя нужен практически всегда, когда речь идет о наследовани - иначе при удалении, не будет вызыаться деструктор наследника, что приведет как минимум к утечке ресурсов.