Может кто-нибудь сказать мне, что именнооператор std :: string() const?
operator std::string()
означает?
Может кто-нибудь сказать мне, что именнооператор std :: string() const?
operator 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!".
операторы Cast почти всегда плохая идея, так как это всегда лучший способ добиться того же результата. В приведенном выше случае вам лучше определить operator<<(std::ostream&, const Foo&)
.
Это conversion operator, который позволяет объекту явно или неявно отбрасываться в std :: string. Когда происходит такое приведение, оператор вызывается, и результат приведения является результатом вызова.
В качестве примера неявного литья предположим, что у вас есть функция, принимающая тип std::string
или const std::string&
, но не тип данного объекта. Передача объекта в эту функцию приведет к вызову оператора преобразования, при этом результат будет передан функции вместо вашего типа.
Я возражаю против термина «всегда», он слишком абсолютен. Я думаю, что «обычно» будет лучшим термином. –
Мартин, я не говорил «всегда». Я сказал «почти всегда», что не является абсолютным, и является ИМО ближе к истине, чем «обычно». –
Loki, ваш собственный комментарий слишком велик. Если один * всегда * избегает термина «всегда» или должен всегда * избегать термина «всегда»? – Alyoshak