gpt4 book ai didi

c++ - 运算符()的含义?

转载 作者:太空狗 更新时间:2023-10-29 23:37:39 24 4
gpt4 key购买 nike

C++中operator()是什么意思?我看到它经常用于“仿函数”或函数对象,例如比较器。但是这些函数是如何调用的呢?它在其他情况下有用吗?我可以为这样的运算符声明多少个参数?例如,以下是否可以接受?

bool operator() (Foo f, Baz b, Quz q, Oik o) {...}

最佳答案

假设您有一个函数对象类 Func,其中定义了 operator()。如果您有该类的一个实例,您可以简单地在引用该实例的表达式后放置括号:

Func myFunc;
myFunc(); // Calls the operator() member function

作为标准库中的一个例子,我们可以看一下 std::less,它是一个二元函数对象:

std::less<int> myLess; // Create an instance of the function object
std::cout << myLess(5, 6) << std::endl; // Is 5 less than 6?

operator() 的另一个常见用途是创建 Matrix 类。您可以定义 T& Matrix::operator()(int,int) 以从矩阵中检索元素,例如 myMatrix(1,2)

operator() 可以接受的参数数量与任何其他函数相同。这是实现定义的。您的实现应允许的建议最小参数数量为 256(在标准的附件 B 中给出)。


operator() 的查找在标准 (ISO/IEC 14882:2003 §13.3.1.1.2) 中定义为:

If the primary-expression E in the function call syntax evaluates to a class object of type "cv T", then the set of candidate functions includes at least the function call operators of T. The function call operators of T are obtained by ordinary lookup of the name operator() in the context of (E).operator().

翻译:如果您使用语法 expression() 进行函数调用并且括号前的表达式计算为类的实例,则添加对象 operator() 成员函数添加到可能被调用的候选函数列表中。

关于c++ - 运算符()的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5557392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com