用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。注意:进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。 用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性需要...
1 . 用于类层次结构中父类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成父类表示)是安全的; 2 . 进行下行转换(把父类指针或引用转换成子类指针或引用)时,由于没有动态类型检查,所以是不安全的(子类可能有父类没有的数据成员和方法); 3 . 用于基本数据类型之间的转换,如把int转换成char...
(5)在类的转换时,在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的。在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。 向上转换,即为子类指针指向父类指针(一般不会出问题);向下转换,即将父类指针转化子类指针。 向下转换的成功与否还与将要转换的类型有关,即要转换的...
这里就会发生异常,强转失败,在上面代码 Person p = new Student(); 父类中装的是 student。这两个强转充分说明了如果父类中装的是子类对象,那么可以将这个父类强转为子类对象。 那么还有一个问题,在里氏强转时经常会抛异常,所以在我们里氏强转时经常使用 is 和 as 类型转换。 is 和 as is:表示类型转换,...
dynamic_cast动态类型转换,多态类之间的类型转换,如子类和父类之间的多态类型转换。 reinterpret_cast重新解释类型,不同类型指针和整型之间的相互转换,没有进行二进制的转换。 在转换时可以通过 TypeName VarB = XXX_cast<TypeName>(VarA);这种方式进行转换,下面详细介绍四种方法的区别。
// 将父类的方法和属性都转为 public class Child : public Parent { public : void function() { cout << " 子类方法 " << endl; } void function_viurtual() { cout << " 子类虚函数 " << endl; } }; 1. 2. 3. 4. 5. 6.
(ps. 其实C语言中我们甚至还可以将父类对象强转为子类对象,不过这种方式有一定访问非法地址的风险,所以需要有限制条件,会在后续内容中提到) 3. 多态 所谓多态,用更加通俗一点的理解就是通过相同的接口,达到实现不同功能的目的。JAVA中多态一般体现为重写(Override),它是基于继承机制的一个操作,即在不同子类中根据...
进行上行转换,也就是把子类的指针或引用转换成父类表示,这种转换是安全的; 当进行下行转换,也就是把父类的指针或引用转换成子类表示,这种转换是不安全的,也需要程序员来保证; 用于基本数据类型之间的转换,如把...int转换成char,把int转换成enum等等,这种转换的安全性需要程序员来保证 把void指针转换成目标类型的...
进行上行转换,也就是把子类的指针或引用转换成父类表示,这种转换是安全的;当进行下行转换,也就是把父类的指针或引用转换成子类表示,这种转换是不安全的,也需要程序员来保证;用于基本数据类型之间的转换,如把...int转换成char,把int转换成enum等等,这种转换的安全性需要程序员来保证把void指针转换成目标类型的指针...
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 Java 子类强转父类 父类引用指向子类对象: java中子类强转父类,实际上依然是子类; 该引用只能调用父类中定义的方法和变量; ...