C++ 这个C++;语法意义?

C++ 这个C++;语法意义?,c++,syntax,C++,Syntax,这是声明。我相信这是在使用cast操作符,但是后期增量的处理是什么呢 (*C)(x_i,gi_tn,f)++; C的声明和定义: std::auto_ptr<conditional_density> C(new conditional_density()); 父类datmoConditionalDensity只有一个虚拟析构函数 通过调试代码很容易回答这个问题,但这段代码不会在Windows下生成(需要一堆外部库)。如果我解释正确,C是指向函数对象的指针(定义了操作符())。这意

这是声明。我相信这是在使用cast操作符,但是后期增量的处理是什么呢

(*C)(x_i,gi_tn,f)++;
C
的声明和定义:

std::auto_ptr<conditional_density> C(new conditional_density());
父类datmoConditionalDensity只有一个虚拟析构函数


通过调试代码很容易回答这个问题,但这段代码不会在Windows下生成(需要一堆外部库)。

如果我解释正确,
C
是指向函数对象的指针(定义了
操作符()
)。这意味着

(*C)(x_i,gi_tn,f)
表示“取消引用
C
以获取函数对象,然后使用参数
x_i
gi_tn
f
调用它。请注意,函数返回一个
双精度&
,因此此行

(*C)(x_i,gi_tn,f)++;
表示“取消引用C,使用适当的参数调用函数,最后对结果进行后加。”

希望这有帮助!

操作符()(int,int,int)返回对double静态数组元素的引用

++运算符递增返回的值

(*C)(x_i,gi_tn,f)++;
让我们把它分解一下:

(*C)
这将取消对指针的引用。C是一个智能指针,因此可以取消引用以获得所指向的实际元素。结果是一个
条件密度
对象

(*C)(x_i,gi_tn,f)
这将调用
条件密度
类中的重载
()
运算符。第一次看到它可能会很奇怪,但它与其他所有运算符一样,是一个运算符。底线是它调用此代码:

  double& operator()( int x, int g, int f )
  {
    assert( (x + g*x_count + f*x_count*g_count >= 0) && (x + g*x_count + f*x_count*g_count < x_count*g_count*f_count) );
    return C[x + g*x_count + f*x_count*g_count];
  }

因为重载的
()
运算符返回对double的引用,所以我可以在其上使用
++
来增加double。

@akappa,你是对的,我在考虑逗号运算符(不要问我为什么).我的错:)这一行代码背后的格言是:可读性是为懦夫准备的?@Grizzly,真正的程序员在一行代码中完成所有工作……屏幕关闭……在黑暗中……用笔时。:)
  double& operator()( int x, int g, int f )
  {
    assert( (x + g*x_count + f*x_count*g_count >= 0) && (x + g*x_count + f*x_count*g_count < x_count*g_count*f_count) );
    return C[x + g*x_count + f*x_count*g_count];
  }
(*C)(x_i,gi_tn,f)++