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

Syntax for using overloaded operator C++

本文关键字:语法 C++ 运算符 重载      更新时间:2023-10-16

这是一个类中包含的重载运算符:

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

我一辈子都无法理解:

  • 我将如何调用此运算符
  • 它的回报值是多少
  • [次要]使其inline是否会影响效率之外的其他方面

如果Foo是一个类型并且在类内,则该表达式看起来像是转换运算符的声明。第二个const(靠近左花括号的那个)意味着可以在const实例上调用转换。假设这个类是C。你可以把转换运算符看作是类外的构造函数。例如,不能向类std::string添加构造函数,但可以向类添加std::字符串的转换运算符。结果是,您可以从类实例中构造std::string。

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

2) 返回值为const Foo

3) inline的含义与任何函数相同,特别是不影响过载分辨率