gpt4 book ai didi

c++ - 函数重载问题C++

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:26 24 4
gpt4 key购买 nike

我正在运行一个期权定价模型,该模型为四种不同的期权产生四种值(value)。

class EuroOption
{
private:
double S; //underlying stock price
double X; //strike price
double sigma; //volatility
double T; //time to expiration
double r; //risk-free rate
double b; //cost of carry
public:
EuroOption(); //default constructor
~EuroOption(); //destructor
EuroOption(const EuroOption& eo); //copy constructor
EuroOption& operator = (const EuroOption& source); //assignment operator
EuroOption(vector<double> Batch1);
EuroOption(vector<double> Batch2); //this is the error: redeclaration
//EuroOption(vector<double> const Batch3);
//EuroOption(vector<double> const Batch4);

这是 .cpp 的源 Material :

EuroOption::EuroOption(vector<double> Batch1) : S(60), X(65), sigma(0.30), r(0.08), T(0.25), b(r)
{
}

EuroOption::EuroOption(vector<double> Batch2) : S(100), X(100), sigma(0.20), r(0), T(1), b(r)
{
}

我收到的错误是“无法重新声明构造函数”。但是我的函数有不同的参数(Batch1/Batch2)所以我不明白为什么它没有重载。 Batch2 的输出也与 Batch 1 相同(这是不正确的)。如果您能提供指导,我将不胜感激。

最佳答案

重载是基于参数类型而不是参数名称。

EuroOption::EuroOption(vector<double> Batch1)  

在这里vector<double>是参数类型,Batch1是参数名。
如果要重载函数,则应声明具有不同参数类型或不同数量参数的函数。

例如,这些是重载函数,

EuroOption::EuroOption(vector<double> Batch1)
EuroOption::EuroOption(vector<int> Batch1)
EuroOption::EuroOption(string Batch1)

关于c++ - 函数重载问题C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28848210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com