У меня есть классы A
и B
.B
происходит от A
и перегружает метод WhoAreYou()
, когда я сейчас создаю переменную типа A
и задаю значение для объекта B
, а затем вызываю WhoAreYou()
, метод A
называется.Посмотрите на это:
class A{
public:
virtual void WhoAreYou(){
cout << "I am A!"<<endl;
}
};
class B: public A{
public:
void WhoAreYou(){
cout << "I am B!" << endl;
}
};
int main(int argc, char ** argv){
A a = B();
a.WhoAreYou(); //Output: I am A!
}
Есть ли способ перегрузить метод так, чтобы в этом случае был вызван метод WhoAreYou()
для B?Когда я должен сначала привести объект, перегрузка метода, на мой взгляд, не имеет смысла ...
Спасибо за вашу помощь!