C++ 变量名C+后的括号+;

C++ 变量名C+后的括号+;,c++,syntax,C++,Syntax,使用下面的源代码(它是开源的),我从未见过变量名后面的括号。UDefEnergyH绝对是一个变量,如第1行所示。谁能告诉我这些括号在做什么?我真的不知道怎么用谷歌搜索这个。谢谢 bins[0] = UDefEnergyH.GetLowEdgeEnergy(size_t(0)); vals[0] = UDefEnergyH(size_t(0)); //Don't know what this does??? sum = vals[0]; for (ii = 1; ii < maxbin; i

使用下面的源代码(它是开源的),我从未见过变量名后面的括号。UDefEnergyH绝对是一个变量,如第1行所示。谁能告诉我这些括号在做什么?我真的不知道怎么用谷歌搜索这个。谢谢

bins[0] = UDefEnergyH.GetLowEdgeEnergy(size_t(0));
vals[0] = UDefEnergyH(size_t(0)); //Don't know what this does???
sum = vals[0];
for (ii = 1; ii < maxbin; ii++) {
    bins[ii] = UDefEnergyH.GetLowEdgeEnergy(size_t(ii));
    vals[ii] = UDefEnergyH(size_t(ii)) + vals[ii - 1];
    sum = sum + UDefEnergyH(size_t(ii));
}
似乎
operator()
对于
UDefEnerfyH
的tyupe重载

一种方法是

#包括
使用名称空间std;
结构MJ{
void GetLowEdgeEnergy(大小参数){

cout这就是所谓的直接初始化,它首先用“0”作为立即参数构造对象,然后将其分配给VAL数组的第一个索引。

您似乎在引用类中的字段。它的类型是。请查看它的。正如您所看到的,这就是ca第二行有注释。不太容易找到它的作用,但是如果您查看头文件中的注释,您将看到:

00100          // Returns simply the value in the bin specified by 'binNumber'
00101          // of the dataVector. The boundary check will not be Done. If 
00102          // you want this check, use the operator [].

运算符重载实际上没有额外的上下文,我们可能无法回答这个问题。@MohitJain提出的肯定是一种可能的解释
UDefEnergyH
是一个对象的实例。
UDefEnergyH(0)
调用其重载函数调用运算符
UDefEnergyH::Operator()(std::size\t i)
.Wow,完全忘记了这是一件事。谢谢,就是这样。我会尽快将它标记为最佳答案,以便让我知道。它是否也可能是函数指针?=)@Mints97不,因为代码中有
UDefEnergyH.GetLowEdgeEnergy
行。你是指VAL数组吗
#include <iostream>
using namespace std;

struct MJ {
    void GetLowEdgeEnergy(size_t arg) {
        cout << "GetLowEdgeEnergy, arg = " << arg << endl;
    }
    void operator ()(size_t arg) {
        cout << "operator (), arg = " << arg << endl;
    }
};

int main() {
    MJ UDefEnergyH;
    UDefEnergyH.GetLowEdgeEnergy(42);
    UDefEnergyH(42);
    return 0;
}
00100          // Returns simply the value in the bin specified by 'binNumber'
00101          // of the dataVector. The boundary check will not be Done. If 
00102          // you want this check, use the operator [].