Casts are dangerous things in C++. Besides the slicing problem, values do not always know their actual value, and thus a cast transformation may not be valid, but this invalidity will not be caught by the C++ run-time system. Unlike Java, the conversion is performed without a run-time check.