Pull to refresh
34
0
Георгий Баркан @h1ppo

User

Send message

Неожиданное коварство параметров по умолчанию или язык мой — враг мой

Reading time3 min
Views12K
Хочется поделиться одним поучительным примером того, как, казалось бы, совершенно безобидная возможность языка программирования может обвести вокруг пальца даже опытного разработчика.

Вот пример кода. Вопрос традиционный, что напечатает программа? Постарайтесь скомпилировать и выполнить этот очень простой код «в уме», так будет интереснее.

#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;
}


Не заглядывайте в ответ! Ну что, определились? Смелее!
Посмотреть ответ
Total votes 126: ↑112 and ↓14+98
Comments346

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity