使用重载运算符 C++ 的语法

Syntax for using overloaded operator C++

这是 class 中包含的重载运算符:

inline operator const FOO() const { return _obj_of_type_FOO; }

我这辈子都搞不懂:

如果 Foo 是一个类型并且它在 class 中,那么该表达式看起来像是一个转换运算符的声明。第二个 const(靠近左大括号的那个)表示可以在 const 实例上调用转换。假设 class 是 C。您可以将转换运算符视为 class 之外的构造函数。例如,您不能将构造函数添加到 class std::string,但可以将转换运算符添加到 std::string 到您的 classes。结果是您可以从 class 实例构造 std::string。

1) 如何调用转换运算符:从C构造一个Foo类型的值,例如: Foo foo = c(其中 c 是 C 的实例,即声明转换运算符的 class)。请注意,转换的调用可以隐式发生。例如,如果您有 void funOnFoo(Foo v);C 的实例 c,这可能会隐式调用 operator const FoofunOnFoo(c)。这是否确实如此,取决于通常的事情:是否有 funOnFoo 的其他重载、C 的其他转换等

2) return 值为 const Foo

3) inline 与任何函数的含义相同,特别是不影响重载决议