Подтвердить что ты не робот

Оператор std::string() const?

Может кто-нибудь сказать мне, что именно

operator std::string()

означает?

4b9b3361

Ответ 1

Это оператор преобразования , который позволяет явно или неявно указывать объект на std::string. Когда происходит такое приведение, оператор вызывается, и результат приведения является результатом вызова.

В качестве примера неявного литья предположим, что у вас есть функция, которая принимает тип std::string или const std::string&, но не тип данного объекта. Передача объекта в эту функцию приведет к вызову оператора преобразования, при этом результат будет передан функции вместо вашего типа.

Ответ 2

Это оператор трансляции. Любой класс, который определяет этот тип, может использоваться везде, где требуется 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&).