Предположим, вы перегружаете функцию:
void display_widget( float f );
void display_widget( Apple a );
Мой вопрос имеет более высокий приоритет:
- конструктор преобразования, создающий
Apple
из float
- Перегруженная функция, имеющая
float
в своем списке параметров
#include <iostream>
class Apple
{
public:
Apple() : f{ 0.0 } {};
float get_f() { return f; }
Apple(float _f) : f{ _f } {};
operator float() { return f; }
private:
float f;
};
void display_widget( float f )
{
std::cout << "The float is: " << f << std::endl;
}
void display_widget( Apple a )
{
std::cout << "The Apple is: " << a.get_f() << std::endl;
}
int main(int argc, char* argv[])
{
display_widget(49.95);
return 0;
}
Обратите внимание, что у нас есть две display_widget
функции, одна из которых принимает Apple
, а другая принимаетfloat
Рассмотрим следующую строку внутри main
:
display_widget(49.95);
Что из следующего является правильным псевдокодом, описывающим, что происходит:
+---------------------------------+--------------------------------+
| option 1 | option 2 |
+---------------------------------+--------------------------------+
| display_widget( float f ); | a = Apple( float _f ); |
| | display_widget( Apple a ); |
+---------------------------------+--------------------------------+