Сообщение Вызов функции с параметром со знач-м, заданным по-умолчанию. от 02.03.2021 19:12
Изменено 02.03.2021 19:36 centos
Вызов виртуальной функции с параметром со знач-м, заданным по-умолчанию?
class A
{
public:
A()
{
f();
}
virtual void f(int i = 10)
{
std::cout << i << '\n';
}
};
class B: public A
{
public:
B()
{
f();
}
virtual void f(int i = 25) override
{
std::cout << "B::f " << i << '\n';
}
};
int main()
{
B b;
A& a = b;
a.f();
}
Вывод:
10
B::f 25
B::f 10
Объясните, почему вывод 2-й и 3-й строк различается?
Последний вопрос: почему в 3-й строчке была вызвана B::f со значением 10?
Вызов функции с параметром со знач-м, заданным по-умолчанию.
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?