如何实现C++强制转换?

Ari*_*Ari 16 c++ casting

C++的强制转换static_cast,const_cast,reinterpret_cast有一个模板的语法,如

long foo = 3; 
int bar = static_cast<int>(foo);
Run Code Online (Sandbox Code Playgroud)

我看过标准版,它说演员表是表达式,而不是我想的模板函数.

这让我想知道:在幕后,这些演员阵容只是具有特权状态的模板,还是他们碰巧借用模板语法的关键字?

Kon*_*lph 16

他们是否碰巧借用模板语法?

这个.根据使用的上下文,强制转换的实现方式不同 - 通常,它们不能作为函数实现.例如,static_cast有时只是一个编译时操作,没有为它发出代码.但有时(特别是在调用构造函数,在类型层次结构中进行转换或在布局不兼容的基元类型之间进行转换时),它需要运行时操作.

也就是说,您可以实现类似于标准强制语法的自己的函数(boost::lexical_cast这样做).