使用重载运算符 C++ 的语法
Syntax for using overloaded operator C++
这是 class 中包含的重载运算符:
inline operator const FOO() const { return _obj_of_type_FOO; }
我这辈子都搞不懂:
- 我将如何调用此运算符?
- 它的 return 值是多少?
- [Secondary] 是否使它 inline 除了效率之外还有什么影响?
如果 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 Foo
:funOnFoo(c)
。这是否确实如此,取决于通常的事情:是否有 funOnFoo
的其他重载、C
的其他转换等
2) return 值为 const Foo
3) inline
与任何函数的含义相同,特别是不影响重载决议
这是 class 中包含的重载运算符:
inline operator const FOO() const { return _obj_of_type_FOO; }
我这辈子都搞不懂:
- 我将如何调用此运算符?
- 它的 return 值是多少?
- [Secondary] 是否使它 inline 除了效率之外还有什么影响?
如果 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 Foo
:funOnFoo(c)
。这是否确实如此,取决于通常的事情:是否有 funOnFoo
的其他重载、C
的其他转换等
2) return 值为 const Foo
3) inline
与任何函数的含义相同,特别是不影响重载决议