C ++中的overload()括号运算符的语法

时间:2017-09-07 05:33:02

标签: c++ header overloading operator-keyword parentheses

我是C ++的新手,并获得了这项任务。我必须使用这个头文件,我从中提供了相关的摘录。类名是PayoffAsianCall。

PayoffAsianCall(double strike);
virtual double operator()(std::vector<double> & spot) const;
virtual ~PayoffAsianCall(){}

我想在主文件中为操作符分配一些东西 我一直在使用

    PayoffAsianCall &PayoffAsianCall::virtual double operator()(std::vector<double> & spot) const { do stuff here}

但这没有奏效。有人可以向我解释正确的语法吗?

1 个答案:

答案 0 :(得分:0)

对于初学者来说总是很难获得一些理由而且c ++并不容易驯服。所以这里有一些提示:

我们从您的尝试开始

  

PayoffAsianCall&amp; PayoffAsianCall :: virtual double operator()(std :: vector&amp; spot)const {do stuff here}

首先:首先要注意的是返回类型,你说返回类型是

  

PayoffAsianCall&amp;

顺便说一句。你应该真正关注&的位置。在这种情况下,它意味着referenece及其PayoffAsianCall参考,所以它应该是PayoffAsianCall&amp;而不是PayoffAsianCall&amp ;.

但无论如何:在类定义中,你说返回值是double所以它应该是double

  

double PayoffAsianCall :: virtual double operator()(std :: vector&amp; spot)const {do stuff here}

那已经好多了。现在我们需要运算符名称,因为它是一个类成员,名称包含类名virtualdouble与名称无关,virtual保留用于类定义本身所以这里没有空间,双重已经被照顾。所以我们现在有:

  

double PayoffAsianCall :: operator()(std :: vector&amp; spot)const {do stuff here}

就是这样。如前所述,我建议正确放置&。它不是std :: vector reference-spot而是std :: vector-reference spot:

  

double PayoffAsianCall :: operator()(std :: vector&amp; spot)const {do stuff here}

进行。