Question

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?

Was it helpful?

Solution

There is no difference between them. (int)floatvar is C way of doing the cast where as int(floatvar) is the C++ way (Although it is better to be explicit and use static_cast<>).

OTHER TIPS

No, it's the same thing.

Anyway, for C++ cast static_cast is preferable.

The notation is a general one for any type, and the fact you can do it with int means it will work in templates.

template < typename T, typename U >
T makeTFromU( U u )
{
   return T( u );
}

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.

std::vector< int > v( 20, x );

thus it will probably internally call int(x) to create the first one to then copy into the 20 elements.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top