可能重复:
C++: What's the difference between function(myVar) and (function)myVar ?
我已经看到并使用了这些类型转换的两种变体:
int(floatvar)
(int)floatvar
这两者有什么区别吗?关于何时使用哪个有什么偏好?
答案 0 :(得分:9)
它们之间没有区别。 (int)floatvar
是进行转换的C方式,其中int(floatvar)
是C ++方式(虽然最好是明确并使用static_cast<>
)。
答案 1 :(得分:3)
不,这是一回事。
无论如何,对于C ++, static_cast 最好。
答案 2 :(得分:1)
符号是任何类型的通用符号,你可以使用int来表示它可以在模板中使用。
template < typename T, typename U >
T makeTFromU( U u )
{
return T( u );
}
好的,这是一个非常简单的例子来表示一个观点,但即使T是int而且U是一个可以转换为int的类型,它也能正常工作。
标准库中的一个例子是vector。如果你使用这个构造函数,它会从参数构造一个元素,而其他元素则由第一个构造函数构造。
std::vector< int > v( 20, x );
因此它可能会在内部调用int(x)来创建第一个然后复制到20个元素中。