<b>C++中强迫转换函数总结</b>[VC/C++编程]
本文“<b>C++中强迫转换函数总结</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
尺度c++中主要有四种强迫转换范例运算符:
const_cast,reinterpret_cast,static_cast,dynamic_cast等等.
1)static_cast<T*>(a)
将地址a转换成范例T,T和a必须是指针、引用、算术范例或列举范例.
表达式static_cast<T*>(a),a的值转换为模板中指定的范例T.在运行时转换历程中,不举行范例查抄来确保转换的安全性.
例子:
class B { ... };
class D : public B { ... };
void f(B* pb, D* pd)
{
D* pd2 = static_cast<D*>(pb); // 不安全, pb大概只是B的指针
B* pb2 = static_cast<B*>(pd); // 安全的
...
}
class B { ... };
class D : public B { ... };
void f(B* pb, D* pd)
{
D* pd2 = static_cast<D*>(pb); // 不安全, pb大概只是B的指针
B* pb2 = static_cast<B*>(pd); // 安全的
...
}
class B { ... };
class D : public B { ... };
void f(B* pb, D* pd)
{
D* pd2 = static_cast<D*>(pb); // 不安全, pb大概只是B的指针
B* pb2 = static_cast<B*>(pd); // 安全的
...
}
2)dynamic_cast<T*>(a)
完成类层次构造中的晋升.T必须是一个指针、引用或无范例的指针.a必须是决意一个指针或引用的表达式.
表达式dynamic_cast<T*>(a) 将a值转换为范例为T的对象指针.假如范例T不是a的某个基范例,该操作将返回一个空指针.
例子:
class A { ... };
class B { ... };
void f()
{
A* pa = new A;
B* pb = new B;
void* pv = dynamic_cast<A*>(pa);
// pv 目前指向了一个范例为A的对象
...
pv = dynamic_cast<B*>(pb);
// pv 目前指向了一个范例为B的对象
}
以上是“<b>C++中强迫转换函数总结</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |