Is static_cast<T>(...) something that gets done at compile-time or run-time? I've googled around but I got different answers.

Also, dynamic_cast<T>(...) is obviously runtime - but what about reinterpret_cast<T>(...)?

有帮助吗?

解决方案

Depends on what you are casting to what else. E.g. static_cast<std::string>("Hello") ends up calling std::string constructor.

Off the top of my head, I can't think of any case where reinterpret_cast would need to generate actual machine instructions. It's just telling the compiler: take this bit pattern, and believe it to be a value this type.

其他提示

Compile time. In fact, the compiler doesn't even insert runtime code to check that the result is correct. The compiler does check that the conversion is statically possible, of course. Example: casting from a subclass to a superclass. If the conversion requires invoking a builtin or a casting function, they will be executed at runtime, of course, but there will be no type checking.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top