我想将我的类转换为 double 值。这可以通过重载 operator double()
来实现但这允许隐式转换,理想情况下我希望能够避免这种情况。
是否有任何方法可以添加此功能,但要求使用 double y = static_cast<double>(x)
进行转换而是隐含地被制造出来; double y = x
?
我正在使用 C++17。谢谢
最佳答案
是的,从 C++11 开始,您可以将转换运算符标记为显式。
explicit operator double() { /* ... */ }
这将阻止复制初始化,例如,
double y = x;
return x; // function has double return type
f(x); // function expects double argument
同时允许显式转换,例如
double y(x);
double y = static_cast<double>(x);
关于c++ - 要求通过 static_cast<double>(x) 显式调用运算符 double(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085095/