Хочется поделиться одним поучительным примером того, как, казалось бы, совершенно безобидная возможность языка программирования может обвести вокруг пальца даже опытного разработчика.
Вот пример кода. Вопрос традиционный, что напечатает программа? Постарайтесь скомпилировать и выполнить этот очень простой код «в уме», так будет интереснее.
Не заглядывайте в ответ! Ну что, определились? Смелее!
Вот пример кода. Вопрос традиционный, что напечатает программа? Постарайтесь скомпилировать и выполнить этот очень простой код «в уме», так будет интереснее.
#include <iostream>
using namespace std;
class A {
public:
virtual void Foo (int n = 10) {
cout << "A::Foo, n = " << n << endl;
}
};
class B : public A {
public:
virtual void Foo (int n = 20) {
cout << "B::Foo, n = " << n << endl;
}
};
int main() {
A * pa = new B ();
pa->Foo ();
return 0;
}
Не заглядывайте в ответ! Ну что, определились? Смелее!