Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C++ casts static_cast, const_cast,reinterpret_cast具有类似模板的语法,例如
static_cast
const_cast
reinterpret_cast
long foo = 3; int bar = static_cast<int>(foo);
我查看了标准,它说强制转换是表达式,而不是我想的模板函数。
这让我想知道:在幕后,这些演员表只是具有特权状态的模板,还是它们恰好借用了模板语法的关键字?
它们是恰好借用模板语法的关键字吗?
这。强制转换的实现取决于它们所使用的上下文——一般来说,它们不能作为函数来实现。例如,static_cast有时只是一个编译时操作,不会为它发出任何代码。但其他时候(特别是在调用构造函数、在类型层次结构中强制转换或在布局不兼容的原始类型之间转换时)它需要运行时操作。
也就是说,您可以实现自己的类似于标准强制转换语法的函数(boost::lexical_cast这样做)。
boost::lexical_cast