operator std :: string()const?

时间:2010-06-15 11:29:21

标签: c++ operator-keyword

有人可以告诉我究竟是什么

operator std::string()

代表什么?

2 个答案:

答案 0 :(得分:23)

它是conversion operator,允许将对象显式或隐式地转换为std :: string。当发生这样的强制转换时,将调用运算符,并且强制转换的结果是调用的结果。

作为隐式转换的示例,假设您有一个接受类型std::stringconst std::string&的函数,但不接受给定的对象类型。将对象传递给该函数将导致调用转换运算符,结果将传递给函数而不是您的类型。

答案 1 :(得分:16)

这是一个演员。任何定义此类型的类都可以在需要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&)