int(floatvar) 和 (int)floatvar 之间有区别吗?
我已经看到并使用了这些类型转换的两种变体:
int(floatvar)
(int)floatvar
两者之间有什么区别吗?对于何时使用哪个有什么偏好吗?
Possible Duplicate:
C++: What's the difference between function(myVar) and (function)myVar ?
I have seen and used both variants of these typecasts:
int(floatvar)
(int)floatvar
Is there any difference between the two? Are there any preferences about when to use which?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
它们之间没有区别。
(int)floatvar
是进行强制转换的 C 方式,而int(floatvar)
是 C++ 方式(尽管最好明确并使用static_cast
) >
)。There is no difference between them.
(int)floatvar
is C way of doing the cast where asint(floatvar)
is the C++ way (Although it is better to be explicit and usestatic_cast<>
).不,这是同一件事。
无论如何,对于 C++ 来说,强制转换 static_cast 是更好的选择。
No, it's the same thing.
Anyway, for C++ cast static_cast is preferable.
该表示法是任何类型的通用表示法,事实上您可以使用 int 来表示,这意味着它可以在模板中使用。
好吧,这是一个非常简单的例子来显示一个点,但即使 T 是 int 并且 U 是可以转换为 int 的类型,它也能工作。
标准库中的一个例子是向量。如果您使用此构造函数,它将根据参数构造一个元素,并通过第一个元素的复制构造函数构造其他元素。
因此它可能会在内部调用 int(x) 来创建第一个元素,然后复制到 20 个元素中。
The notation is a general one for any type, and the fact you can do it with int means it will work in templates.
Ok, that is a very simple case to show a point, but it works even when T is int and U is a type that can be converted to int.
An example in the standard library would be vector. If you use this constructor it constructs one element from the parameter and the others by copy-constructor from the first.
thus it will probably internally call int(x) to create the first one to then copy into the 20 elements.