Программа ниже содержит две функции show () в родительском и дочернем классах, но первая функция show () принимает аргумент FLOAT, а вторая функция show () принимает аргумент INT.
. Если я вызываю функцию show (10.1234), передавая аргумент float, она должна вызывать функцию show (float a) класса A, но она вызывает функцию show b (int b) класса B.
#include<iostream>
using namespace std;
class A{
float a;
public:
void show(float a)
{
this->a = a;
cout<<"\n A's show() function called : "<<this->a<<endl;
}
};
class B : public A{
int b;
public:
void show(int b)
{
this->b = b;
cout<<"\n B's show() function called : "<<this->b<<endl;
}
};
int main()
{
float i=10.1234;
B Bobject;
Bobject.show((float) i);
return 0;
}
Выход:
B's show() function called : 10
Ожидаемый результат:
A's show() function called : 10.1234
Почему компилятор g ++ выбран неправильно show()
функция, т. Е. class B
show(int b)
функция?