Может кто-то говорить мне что точно
operator std::string()
обозначает?
Это оператор преобразования , который позволяет явно или неявно преобразовывать объект в std :: string. Когда происходит такое приведение, вызывается оператор, и результат приведения является результатом вызова.
В качестве примера неявного преобразования предположим, что у вас есть функция, которая принимает тип std :: string
или const std :: string &
, но не принимает данный тип объекта. Передача вашего объекта этой функции приведет к вызову оператора преобразования, и результат будет передан функции вместо вашего типа.
Это оператор приведения. Любой класс, определяющий этот тип, может использоваться везде, где требуется std::string
. Например,
class Foo {
public:
operator std::string() const { return "I am a foo!"; }
};
...
Foo foo;
std::cout << foo; // Will print "I am a foo!".
Операторы приведения почти всегда являются плохой идеей, поскольку неизменно существует лучший способ достижения того же результата. В приведенном выше случае лучше определить operator<<(std::ostream&, const Foo&)
.