1、cast的使用场所
1、句柄:可以指向一个类或者任何它的宽展类的对象。
2、可以之间将派生类的句柄赋值给一个基类句柄,总是合法的。
3、基类句柄赋值给扩展类句柄,不总是合法的。因为通过扩展类句柄可以使用对象方法或变量时,基类对象中该变量或方法不一定存在。
4、实际的应用过程中,验证组件之间某对象传递都是通过基类句柄进行传递的。
C1(Bad_tr1) -----------------Tr-----------------> C2(Bad_tr)
C1组件中的派生类对象Bad_tr1,通过基类句柄Tr,传递给C2组件中。所以在C2中需要将基类句柄 Tr 赋值给扩展类句柄Bad_tr,由于转换不一定成功,所以必须使用cast。
2、虚方法
通过句柄调用对象的方法时,根据对象类型,而非句柄的类型来决定调用什么方法。