1、const_cast
用于修改const指针指向的值
形式:const_cast <type> (expression)
void Test_const_cast()
{
int num = 10;//若num为const时,则无法修改num的值
const int* p = #
//*p = 12;不可改
int* n = const_cast<int*>(p);
*n = 11;
cout << num << '\t' << *p << endl;//num = 11, *p = 11
}
2、static_cast
用于各种隐式转换,比如非const转const,void*转指针等, static_cast能用于多态向上转化,如果向下转能成功但是不安全,结果未知;
void Test_static_cast()
{
int num = 10;
int* p = #
const int* n = static_cast<int*>(p);
//*n = 11;不可修改
cout << num << '\t' << *n << endl;
}
3、dynamic_cast
用于动态类型转换。只能用于含有虚函数的类,只能向上转换。
向上转换:指的是子类向基类的转换
向下转换:指的是基类向子类的转换