使用重载运算符C++的语法
Syntax for using overloaded operator C++
这是一个类中包含的重载运算符:
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
的含义与任何函数相同,特别是不影响过载分辨率
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 使用基类指针调用基类的值构造函数的语法是什么?
- 很好的语法来获取对向量/数组数据的大小引用?
- C++语法运算符功能?
- C++使用 rand 定义函数语法
- 什么文件可以修改 atom 的C++语法?
- 创建模板嵌套类实例的语法?
- C++语法差异:二维和一维数组(指针算术)
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么