如何从double定义隐式转换?

时间:2015-06-04 15:37:09

标签: c++ operator-overloading

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

Complex operator+(Complex const& x, Complex const& y);

我想定义从doubleComplex的隐式转换,例如,如果我写c + d,其中cComplex }和d double,它会调用我在上面定义的重载+并返回Complex。我怎么能这样做?

2 个答案:

答案 0 :(得分:5)

您只需要为它定义构造函数。这被称为"converting constructor"

Complex::Complex(double x)
{
    // do conversion
}

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

您还可以定义operator+

的其他版本
Complex operator+(Complex const& x, double y);
Complex operator+(double x, Complex const& y);

答案 1 :(得分:4)

只需为explicit Complex添加一个非double构造函数:

Complex(double value);

编译器会自动使用它将double隐式转换为Complex