станд. оператора:: строка () константа?

Может кто-то говорить мне что точно

operator std::string()

обозначает?

28
задан Alex 8 April 2015 в 00:01
поделиться

2 ответа

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

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

25
ответ дан 28 November 2019 в 03:30
поделиться

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

16
ответ дан 28 November 2019 в 03:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: