Static vs Dynamic Type Casting in C++: static_cast Explored