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