Мне нужно, чтобы производный класс вызывал свою новую функцию, как показано ниже. Я пробовал много разных вариантов и позиций ключевых слов.Наследование и использование производной функции
создать базовый класс с двумя методами преднагрузки и нагрузки. Точка PreLoad заключается в загрузке вещей, которые всегда необходимо загружать, а Загрузить используется для того, чтобы класс загружал то, что ему нужно для работы.
class Base
{
public:
Base();
void PreLoad();
virtual void Load();
};
Base::Base() {
PreLoad();
}
void Base::PreLoad() {
Load();
}
class Derived : public Base {
public:
virtual void Load() {
std::cout << "Hia" << std::endl;
}
};
int main()
{
Derived d = Derived();
d.PreLoad();
return 0;
}
Для того, чтобы полиморфизм работал, вам необходимо использовать ссылки или указатели на класс * base *. Затем вы инициализируете ссылку или указатель на ссылку/указываете на производный объект. Например. 'Base * base = new Derived;' Это на самом деле один из немногих случаев, когда указатели полезны в современном C++. Но тогда в «современном» C++ вместо этого использовался бы умный указатель, такой как ['std :: unique_ptr'] (http://en.cppreference.com/w/cpp/memory/unique_ptr), как в' std :: unique_ptr base (new Derived); ' –
@ πάντα ῥεῖ Вот почему я попытался описать свою проблему ... –
Я не понимаю, что вы имеете в виду [работает как ожидается] (http://coliru.stacked-crooked.com/a/f22d7d3fb686cb31) для меня. –