Я не знал, что дать в качестве названия, я ожидаю, что более опытные пользователи stackoverflow.com смогут его улучшить.Вызов метода подкласса из указателя базового класса?
Допустим, мы имеем класса А
class A {
void hello(){ cout << "i'm an A" << endl; }
}
и его подклассу B
class B: public A {
void hello(){ cout << "i'm a B" << endl; }
}
Тогда мы сделали где-то в нашей программе
A* array[2];
array[0] = new A;
array[1] = new B;
array[0]->hello(); // output: "i'm an A"
array[1]->hello(); // output: "i'm a B"
почему не array[1].hello();
output I'm a B
, поскольку мы создали объект B
для этого базового класса po inter? и как это сделать?
Потому что вы не объявили его виртуальным. –
См. Http://stackoverflow.com/questions/5854581/polymorphism-in-c – sehe
[Нет виртуального, без переопределения.] (Http://en.cppreference.com/w/cpp/language/virtual) C++ по умолчанию наименьшая, максимально возможная интерпретация. Если вам нужны фантазии, вы должны это сказать. – user4581301