gpt4 book ai didi

c++ - 我应该如何在两个复数的总和中使用自动类型转换? (C++)

转载 作者:行者123 更新时间:2023-11-30 05:03:41 25 4
gpt4 key购买 nike

我已经为复数创建了一个 Complex 类,并创建了 get/set 方法来提取和更改数字的实部和虚部。现在我想对两个复数求和和相乘,所以我创建了以下函数:

Complex somma(Complex a, Complex b) {
Complex c;
c.set_Rez(a.get_Rez()+b.get_Rez());
c.set_Imz(a.get_Imz()+b.get_Imz());
return c;
}

Complex prodotto(Complex a, Complex b) {
Complex c;
c.set_ro(a.get_ro()*b.get_ro());
c.set_fi(a.get_fi()+b.get_fi());
return c;
}

我的问题是,如果输入是 double 值,是否有办法将简单的 double 值作为函数的输出。是否可以给函数加倍并得到加倍的结果?

最佳答案

My question is if there is a way to have as an output of the functions a simple double if the inputs are doubles. Is it possible to give to the functions doubles and getting a double as a result?

听起来您想要以下重载:

Complex somma(Complex a, Complex b);
Complex somma(Complex a, double b);
Complex somma(double a, Complex b);
double somma(double a, double b);

如果将构造函数从 double 转换为 Complex,您可以简单地使用:

Complex somma(Complex a, Complex b);
double somma(double a, double b);

得到你所需要的。 prodotto

需要类似的功能
Complex prodotto(Complex a, Complex b);
double prodotto(double a, double b);

Complexdouble 重载函数 sommaprodotto 使您的代码看起来更统一。但是,为 Complex 重载 operator+operator* 会更加惯用。

Complex operator+(Complex const& lhs, Complex const& rhs) { ... }
Complex operator*(Complex const& lhs, Complex const& rhs) { ... }

然后就可以使用了

Complex c1 = { ... };
Complex c2 = { ... };
Complex c3 = c1 + c2;
Complex c4 = c1 * c2;

然后,您不必担心为 double 重载 sommaprodotto。对于类型为 Complex 以及类型为 double 的对象,您可以只使用 +*

关于c++ - 我应该如何在两个复数的总和中使用自动类型转换? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49309989/

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