static_cast主要用于基本类型转换和将void*的指针转换为任意类型的指针,然后是将非const的变量转换为const变量,但是不能将const volitale类型转换为普通变量。
相当于C语言中的强制转换。也可以用于父类子类指针的向上转换,此时为安全的。如果用于向下转换不安全。
dynamic 主要用于父类子类之间的转换,向上转换的时候和static_cast一样,安全。向下转换的时候比static_cast多了类型检查,更安全。还有就是如下图所示:
要看父类指针本身指向的是父类对象还是子类对象,如果是本身就是指向的是子类对象,那使用static_cast和dynamic_cast都可以,但是如果本身指向的就是
父类对象,进行向下转换最好使用dynamic_cast,防止使用static_cast出现访问越界的情况。