两者有什么区别
int a;
// a gets some value
double pi = static_cast<double>(a)/3;
和
int a;
// a gets some value
double pi = double(a)/3;
你见过后者吗?在我看来,我在 Stroustrup 编写的一些片段中看到了它,但我找不到引用。
最佳答案
可能有人认为他们是在构建而不是在类型转换。考虑:
some_fun(std::string("Hello"));
许多人认为他们在那里调用了构造函数,而实际上他们正在执行 C 风格的转换。碰巧的是,强制转换会在它查看的一长串其他东西中查看目标类型的构造函数,所以在这里它最终会调用构造函数。
函数符号转换与其他类型的 C 转换具有所有相同的弱点:
- 可以在不经意间抛弃 constness
- 可以默默地变成重新诠释的 Actor
- 很难用 grepping 工具区分。
除此之外,您在两种情况下执行的操作完全相同。
关于c++ - 在 C++ 中,static_cast<double>(a) 和 double(a) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10438249/