我知道dynamic_cast确实占用了执行时间,甚至认为速度很慢,但static_cast也会占用执行时间吗?这是一个示例代码
void printv(const void *str) {
std::cout << *static_cast<const std::string*>(str) << "\n";
}
void prints(const std::string *str) {
std::cout << *str << "\n";
}
int main()
{
std::string str("my string");
printv(&str);
prints(&str);
system("pause");
return 0;
}
printv()
花费的时间会超过prints()
,因为它内部包含了一个演员吗?
答案 0 :(得分:2)
static_cast
可能需要在运行时间。例如,如果您将int
转换为float
,那么就需要工作。通常,转换指针不需要任何运行时成本。
答案 1 :(得分:0)
没有static_cast<>
在执行时没有额外的时间。
static_cast<>
实现在编译时完全解析。
对此的指示是,如果类型不匹配,它只会抛出编译错误。
反过来, dynamic_cast<>
将添加代码以使用RTTI为任何指针或引用强制类型解析类型匹配。