如何从double定义隐式转换?

bec*_*cko 3 c++ operator-overloading

我已经定义了一个Complex重载+运算符的类:

Complex operator+(Complex const& x, Complex const& y);
Run Code Online (Sandbox Code Playgroud)

我想从定义隐式转换doubleComplex,例如,例如,如果我写的c + d,这里c是一个Complexd一个double,它会叫我的过载+,我上面定义并返回Complex.我怎样才能做到这一点?

Cor*_*mer 5

你只需要为它定义一个构造函数.这被称为"转换构造函数"

Complex::Complex(double x)
{
    // do conversion
}
Run Code Online (Sandbox Code Playgroud)

这将允许隐式转换,只要您不使用explicit关键字,这将迫使您必须使用转换来转换.

您还可以定义其他版本的 operator+

Complex operator+(Complex const& x, double y);
Complex operator+(double x, Complex const& y);
Run Code Online (Sandbox Code Playgroud)