什么是 C++ 中调用的 () 运算符
what is () operator called in c++?
class functor;
functor();
()
运算符叫什么?它是否使用 new 运算符创建对象?
我尝试在谷歌上搜索,但结果中没有"((",即使有引号。
编辑 : ()
通常与函子一起使用,但它可以与未重载运算符()
的类一起使用。它创建类的对象。
它被称为 CALL 运算符,它在函数调用期间写在函数名称之后。函数的参数在此运算符中传递(如果有,即(。
当与对象一起使用时,它通常被称为"函数调用运算符",它调用该对象的"运算符 (("。或者,如果对象是普通函数、对函数的引用或对函数的指针,则它只是调用该函数。
如果与类型名称一起使用,语法T()
调用该类型的默认构造函数,创建该类型的未命名对象。该构造中的()
简称为"初始值设定项"。
请参阅 C++ 11 标准的第 8.5 节"初始值设定项"。
在您的示例中,functor
是一个类型,而不是一个对象,表达式 functor()
在函数表示法中称为显式类型转换。将创建类型为 functor
的临时对象。新操作员不以任何方式参与。显式类型转换表达式的确切语法是 simple-type-specifier ( expression-list-opt )
, typename-specifier ( expression-list-opt )
。请注意,我使用了后缀 -opt 而不是订阅 opt,因为标准是这样做的。请参阅 C++14 标准中的 5.2.3 显式类型转换(函数表示法([expr.type.conv],或此处的 cpp首选项。
如果(
的左侧是一个表达式,如functor f; f()
,表达式f()
是一个函数调用。确切的语法是 postfix-expression ( expression-list-opt )
.请参阅 C++14 标准中的 5.2.2 函数调用 [expr.call],或此处的 cppereference。在这里你会说使用了函数调用运算符。f
的类型,这里functor
,必须重载函数调用运算符,例如参见cpprefrence上的"函数调用运算符"一章。您可能还想阅读 cpp首选项上的函数对象页面。
它的函数调用运算符重载。
http://www.tutorialspoint.com/cplusplus/function_call_operator_overloading.htm
相关文章。
为什么要覆盖运算符((?
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 使用运算符调用 void 函数时出错<set>
- C++:使用运算符 = 调用多参数构造函数
- 重载模板运算符调用单独的类运算符
- 为什么转换运算符调用复制构造函数两次,而等效函数只调用它一次
- C++ - 从移动分配运算符调用复制分配
- 从赋值运算符调用构造函数
- C++ 为什么运算符>会中断嵌套的运算符()调用?
- 显式运算符 = 调用和 = 运算符之间是否有区别
- 全局新运算符调用语法
- (C++)从派生类运算符调用基运算符
- 初始化对象后,用隐式转换而不是赋值运算符调用构造函数有什么意义
- 函数可以使用点运算符调用另一个功能
- 为什么这个运算符=调用不明确
- 对重载运算符调用QMetaObject
- 重载unique_ptr运算符调用make_unique
- 对于什么对象指针值,指向成员的指针运算符调用未定义的行为
- 从重载的下标运算符调用虚函数
- 从运算符调用纯虚函数<<
- 可变参数扩展是否可以用作逗号运算符调用链