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ückingcomplex
就是一个例子。我想了解一般情况下如何编写隐式转换。
Complex(double value);