Класс является полиморфным. Почему оба печатают один и тот же вывод?Разница между статическим и динамическим литьем
class A
{
public:
virtual void P(){ cout << "A" << endl; }
};
class B : public A
{
public:
void P()override{
cout << "B" << endl;
}
B(){ cout << "Created B" << endl; s = "Created by B"; }
string s;
};
А главное: Вариант 1:
A* a = new B(); // Created B
B* b = static_cast<B*>(a);
b->P(); B
cout<<b->s<<endl; // Created by B
И вариант 2:
A* a = new B();
B* b = dynamic_cast<B*>(a);
if (b){
b->P();
cout << b->s << endl; // Prints same
}
Что вы ожидали, и почему? – quantdev
Почему вопрос? Вы ожидали, что они напечатают различную продукцию? Если да, то почему? – AnT