39

谁能告诉我究竟是什么

operator std::string()

代表?

4

2 回答 2

32

它是一个转换运算符,允许将对象显式或隐式转换为 std::string。当发生这种转换时,将调用运算符并且转换的结果是调用的结果。

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

于 2010-06-15T11:31:48.207 回答
21

它是一个强制转换运算符。任何定义此类型的类都可以在std::string需要 a 的任何地方使用。例如,

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&).

于 2010-06-15T11:31:43.060 回答