初始化 :使用 子类对象 为 父类对象 初始化 ; 指针:父类指针 指向 子类对象 , 父类指针 值为 子类对象 在 堆内存 的地址 , 也就是 将 子类对象 地址 赋值给 父类类型指针 ; 引用:父类引用 引用 子类对象 , 将 子类对象 赋值给 父类类型的引用 ; 二、类型兼容性原则 - 示例分析 定义父类 Parent ,...
定义父类的指针 , 将 指针 指向 子类对象 的地址 , 这是合法的 ; 代码示例 : 代码语言:javascript 复制 // 父类对象Parent parent;// 子类对象Child child;// I. 类型兼容性原则 : 父类指针 指向 子类对象Parent*p_parent2=NULL;p_parent2=&child; 该原则的应用场景如下 :定义函数 , 接收 父类指针 ...
<< endl; } }; int main() { Child childObj; Parent* parentPtr = &childObj; // 使用父类指针指向子类对象 parentPtr->print(); // 调用的是子类的print函数 return 0; } 复制代码 在上述示例中,我们定义了一个父类Parent和一个子类Child,子类继承自父类。在main函数中,我们创建了一个Child类的对...
re:这种用法叫做“父类引用指向子类对象”(跟绕口令似的),或者叫“父类指针指向子类对象”,指的是定义一个父类的引用,而它实际指向的是子类创建的对象。功能上相当于子类的“向上转型”,或者“上溯对象”, 上面的语句也可以写成: Animal a2 = new Animal(); Dog dog = new Dog(); a2 = dog; 1. 2. 3...
简单来说,C++的多态就是靠父类指针指向子类对象+虚函数来实现的。父类指针指向子类对象,可以调用子类从父类继承来的那一部分,但如果父类中声明了virtual,则可以调用子类中的方法,这样就实现了多态。而子类指针指向父类对象,可能会调用到父类中没用的方法,因此这是不对的。
父类指针指向子类对象,子类指针不能指向父类对象 总结: <1>.当基类指针指向派生类的时候,只能操作派生类从基类中继承过来的数据.(重写虚函数得到的函数也算继承过来的数据) <2>.当派生类指向基类的指针,因为内存空间比基类长,访问的话会导致内存溢出,所以不允许派生类的指针指向基类。
(1)父类指针指向子类时,没有问题,因为父类有的,子类都有,不会出现非法访问问题,也是面向对象特性中多态性的体现(该指针可以调用子类成员,从而使父类指针具备“ 多种形态 ” )。 (2)子类指针指向父类的话,一旦访问子类特有的方法函数或者成员变量,就会出现非法,因为被子类指针指向的由父类创建的对象,根本没有...
子类 子类1 父类2 修改成 class ICBase{public:/*修改接口为虚函数*/virtualvoidmy(){};virtualvoidyou(){};};class CBase:public ICBase{public:voidmy(){cout<<"父类"<<endl;}voidyou(){cout<<"父类1"<<endl;}voidhe(){cout<<"父类2"<<endl;}};class CDerivedA:public CBase{public:void...
java父类this指针指向子类对象 java的父类引用指向子类,这次我们来看一个Java中经典的问题。我们都知道面向对象三大特征:封装、继承、多态我们先来看一个小小的程序classA{publicvoidfun1(){System.out.println("A1");}publicvoidfun2(){this.fun1();}}classBextendsA{