Информация об изменениях

Сообщение Вызов функции с параметром со знач-м, заданным по-умолчанию. от 02.03.2021 19:12

Изменено 07.03.2021 19:14 centos

Вызов функции с параметром со знач-м, заданным по-умолчанию.
class A
{
public:
    A()
    {
        f();
    }
    void f(int i = 10)
    {
        std::cout << i << '\n';
    }
};

class B: public A
{
public:
    B()
    {
        f();
    }
    void f(int i = 25)
    {
        std::cout << "B::f " << i << '\n';
    }
};

int main()
{
    B b;
    A& a = b;
    a.f();
}


Вывод:
10
B::f 25
B::f 10
Почему в 3-й строчке была вызвана B::f со значением 10?
vitualfunctions
Вызов функции с параметром со знач-м, заданным по-умолчанию.
class A
{
public:
    A()
    {
        f();
    }
    virtual void f(int i = 10)
    {
        std::cout << i << '\n';
    }
};

class B: public A
{
public:
    B()
    {
        f();
    }
    void f(int i = 25)
    {
        std::cout << "B::f " << i << '\n';
    }
};

int main()
{
    B b;
    A& a = b;
    a.f();
}


Вывод:
10
B::f 25
B::f 10
Почему в 3-й строчке была вызвана B::f со значением 10?
vitualfunctions