C++ 显式调用一个类';铸造操作方法优于铸造?

C++ 显式调用一个类';铸造操作方法优于铸造?,c++,operator-overloading,C++,Operator Overloading,如果一个类提供了一个方法操作符wchar\u t*,并且我在编译器无法自动推断强制转换的情况下使用该类的实例,那么显式调用强制转换操作符方法而不是实际执行强制转换是否被认为是不好的 e、 g: x.doStuff(o.operator wchar\u t*()) Vs x.doStuff(静态_-cast(o)) 第一个选项是坏的/错误的,还是调用运算符方法是可以接受的?至少这是不寻常的。。。尤其是因为第二个结构非常地道。即使使用普通的CAST操作符也应该更好。 < P>我肯定会使用C++标准函

如果一个类提供了一个方法
操作符wchar\u t*
,并且我在编译器无法自动推断强制转换的情况下使用该类的实例,那么显式调用强制转换操作符方法而不是实际执行强制转换是否被认为是不好的

e、 g:

x.doStuff(o.operator wchar\u t*())

Vs

x.doStuff(静态_-cast(o))


第一个选项是坏的/错误的,还是调用运算符方法是可以接受的?

至少这是不寻常的。。。尤其是因为第二个结构非常地道。即使使用普通的CAST操作符也应该更好。

< P>我肯定会使用C++标准函数。
它们更安全,其中一些,如静态或动态,允许测试转换是否成功。

静态转换(x)与C样式
(T)x
相比的最大优势之一是它是可恢复的。您可以在代码中搜索执行
static\u cast
s的位置,该位置包含确实要执行staticcast的信息(与动态cast、const cast或reinterpret cast相反)


与显式调用cast操作符相比,它还具有所有这些优点

我认为,如果static_cast满足了您的需求,那么您应该更愿意使用它。如果没有,则可以使用显式强制转换运算符。我建议对这个案例进行评论。

我会使用“令人惊讶”一词,因此并不可取。你是否明确调用
操作符=
进行赋值?@Damon这几乎不可比。铸造本质上有点笨拙。@John:是的,但是如果你写了一些类似于
static\u cast(…)
的东西,那么每个人都会立即理解其意图。如果你写的东西像
foo=5每个人都能理解。如果你写了
foo.someo_操作符(…)
,那么至少50%的读者会有一个“嗯,等一下,什么?”的时刻。你也可以搜索“.operator”,但这仍然是一个公平的点。