Answer the question
In order to leave comments, you need to log in
What's wrong with the word virtual?
I am aware that virtual is not a required keyword and should not affect the override.
But!
Everything is fine with this code:
struct A
{
/// Слово virtual отсутствует
std::string Get ()
{
return "AB";
}
};
struct B : public A
{
/// Переопределяем метод Get
std::string Get()
{
/// Приводим this к A* и вызываем Get, удаляя первый символ
return ( ( A* ) this ) -> Get () .erase (0, 1);
}
};
///...
std :: cout <<B().Get(); /// Все нормально, выводится 'B'
struct A
{
/// Слово virtual присутствует
virtual std::string Get ()
{
return "AB";
}
};
struct B : public A
{
/// Переопределяем метод Get
std::string Get()
{
/// Приводим this к A* и вызываем Get, удаляя первый символ
return ( ( A* ) this ) -> Get () .erase (0, 1);
}
};
///...
std :: cout <<B().Get(); /// main сразу завершается с возвратом что то около -14556645665566
Answer the question
In order to leave comments, you need to log in
std::string Get() { /// Приводим this к A* и вызываем Get, удаляя первый символ return ( ( A* ) this ) -> Get () .erase (0, 1); }
struct B : public A
{
/// Переопределяем метод Get
std::string Get()
{
return A::Get () .erase (0, 1);
}
};
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question