C++ 如何定义从double的隐式转换?

C++ 如何定义从double的隐式转换?,c++,operator-overloading,C++,Operator Overloading,我定义了一个类Complex,它重载+运算符: Complex operator+(Complex const& x, Complex const& y); 我想定义一个从double到Complex的隐式转换,例如,如果我写c+d,其中c是一个Complex和d一个double,它将调用我上面定义的重载+/code>,并返回一个Complex。我该怎么做呢?您只需要为它定义一个构造函数。这被称为 这将允许隐式转换,只要您不使用explicit关键字,这将迫使您必须使用强制转换

我定义了一个类
Complex
,它重载
+
运算符:

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

我想定义一个从
double
Complex
的隐式转换,例如,如果我写
c+d
,其中
c
是一个
Complex
d
一个
double
,它将调用我上面定义的重载
+/code>,并返回一个
Complex
。我该怎么做呢?

您只需要为它定义一个构造函数。这被称为

这将允许隐式转换,只要您不使用
explicit
关键字,这将迫使您必须使用强制转换进行转换

您还可以定义
运算符+

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

只需为
复杂
添加一个非
显式
构造函数,使用
双精度

Complex(double value);

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

@DavidHammen-typo-corrected。谢谢。看看std::complex(它已经有了转换)@DieterLücking
complex
就是一个例子。我想了解一般情况下如何编写隐式转换。
Complex(double value);