int(floatvar)和(int)floatvar之间有区别吗?

时间:2010-12-21 09:44:01

标签: c++ language-features typecast-operator

  

可能重复:
  C++: What's the difference between function(myVar) and (function)myVar ?

我已经看到并使用了这些类型转换的两种变体:

int(floatvar)

(int)floatvar

这两者有什么区别吗?关于何时使用哪个有什么偏好?

3 个答案:

答案 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个元素中。