У меня есть класс Rectangle
с операторами преобразования в double
и std::string
:
class Rectangle
{
public:
Rectangle(double x, double y) : _x(x), _y(y) {}
operator std::string ();
operator double ();
private:
double _x, _y;
double getArea() {return _x * _y;}
};
int main()
{
Rectangle r(3, 2.5);
cout << r << endl;
return 0;
}
Я не понимаю, почему вызывается operator double()
, а не operator std::string()
. Насколько я знаю, согласно C++ wikibook, operator double
используется для преобразования объектов Rectangle
в double
.
Так что здесь происходит? Связано ли это с тем, что int
передается конструктору? Если так, то почему?