1 基类指针指向基类对象(正常使用) 2 派生类指针指向派生类对象(正常使用,不管是不是虚函数,调用的都是派生类的函数) 3 基类指针指向派生类对象(多态的体现,虚函数的话调用的是派生类的,非虚函数的话调用的是基类的) 指针不能使用只存在于派生类而不存在于基类中的元素,也就是指向的是派生类中基类的部分 4 ...
基类指针指向派生类(多态性) 虚函数,则调用派生类函数(多态性根据指针所指向的对象类型) 非虚函数,调用基类的函数(根据指针本身基类指针的特性) 派生类指针指向基类 不要这么用 派生类指针指向派生类 正常调用派生类函数,在构造对象和析构对象时自动调用基类构造和析构函数。 __EOF__...
2. 基类指针指向派生类对象 这种情况是允许的,通过定义一个基类指针和一个派生类对象,把基类指针指向派生类对象,但是需要注意,通常情况这时的指针调用的是基类的成员函数。分四种情况: 一、 函数在基类和派生类中都存在 这时通过“指向派生类对象的基类指针”调用成员函数,调用的是基类的成员函数。 Father f1; Son ...
1、派生类会比基类多一些属性和方法,就一地址,指针的类型会决定指针在访问内存时如何访问 2、【举例】基类中属性有a,b,c;那么派生类中除了继承的a,b,c,可能还会有自己的派生的属性d,这时候基类和派生类的指针就看出不同来了;【举例】基类指针赋值一个派生类的指针地址,因为指针的类型没换,...
1:基类中的成员函数被virtual关键字声明为虚函数; 2:派生类中该函数必须和基类中函数的名称、参数类型和个数等完全一致; 3:将派生类的对象赋给基类指针或者引用,实现多态。 函数覆盖(多态)实现了一种基类访问(不同)派生类的方法。我们把它称为基类的逆袭。 基类指针和派生类指针之间的转换 1. 基类指针指向基类...
基类指针指向派生类的对象,那么通过该指针你只能调用基类定义的函数。派生类指针指向基类的对象,那么必须先做明显的转型操作。这种用法极度不推荐。如果基类和派生类都定义了相同名称的成员函数A,那么通过指针调用成员函数时,看指针的原始类型,如果是基类,那么调用的是基类的A函数,如果是派生类,调用的...
/*基类指针 pbase指向派生类对象 objderived,这是合法的。虽然执行完此 行语句后, pbase指向的是派生类对象,尽管基类和派生类都有 Print()成员函数,而且 pbase指向的是派生类对象,本行依然执行的是 基类的 Print()成员函数,产生第一行输出。 编译器看到的是哪个类的指针,那么就会认为通 ...
基类指针可以指向派生类从基类继承的那部分,这就是我们所说的多态,但是如果一个派生类想想指向一个基类的部分,那么这个部分必须是public ,并且这个指向的部分应该是派生类原封不动的继承过来的,并且是在派生类中没有修改,为了安全起见(没有语法的前提下)必须把派生类指针强制转化为基类指针。
只有虚函数例外因为它的地址是从对象内存头四个字节的虚函数表中找到的子类继承父类后会将这四个字节定位到子类的虚函数表中所以才能把复杂的问题傻瓜化 基类指针和派生类指针相互赋值的原理 基类指针和派生类指针相互赋值的原理是啥?#include <iostream>
然后通过指针 来访问类的成员。这包括指向属性成员的指针和指向成员函数的指针。它类似与static成员函数或...