静态强制转换会占用执行时间吗?

时间:2015-11-22 15:23:50

标签: c++

我知道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(),因为它内部包含了一个演员吗?

2 个答案:

答案 0 :(得分:2)

static_cast可能需要在运行时间。例如,如果您将int转换为float,那么就需要工作。通常,转换指针不需要任何运行时成本。

答案 1 :(得分:0)

没有static_cast<>在执行时没有额外的时间。

static_cast<>实现在编译时完全解析。

对此的指示是,如果类型不匹配,它只会抛出编译错误。

反过来,

dynamic_cast<>将添加代码以使用RTTI为任何指针或引用强制类型解析类型匹配。