变量名C++后的括号

Zac*_*itt 8 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; ii++) {
    bins[ii] = UDefEnergyH.GetLowEdgeEnergy(size_t(ii));
    vals[ii] = UDefEnergyH(size_t(ii)) + vals[ii - 1];
    sum = sum + UDefEnergyH(size_t(ii));
}
Run Code Online (Sandbox Code Playgroud)

它在头文件中声明:

G4PhysicsOrderedFreeVector UDefEnergyH;
Run Code Online (Sandbox Code Playgroud)

Moh*_*ain 7

operator()对于tyupe来说,这似乎是超负荷的UDefEnerfyH.

一种方法是这个解决方案

#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;
}
Run Code Online (Sandbox Code Playgroud)