继承就是数据的复制,仅此而已;减少重复代码的编写。
子类继承父类,会把父亲的所有成员增加进子类,形成一个更大的类。
父类指针可以指向子类的对象,因为子类前面就是父类的成员,即父类可以访问靠前的父类的成员部分。
编译器不允许父类指针访问属于子类的成员,从底层来说其实通过指针的+1也可以访问子类的成员,不建议。
子类指针指向父类对象,不要用;
子类指针虽可以指向父类(强转),但太危险。因为父类没有子类的成员,当访问子类成员时,会溢出。
多重继承,子类继承父类、继承爷爷类...
爷爷指针也可以指向子类的对象;
子类与父类的成员名字一样,对于编译器它根本不管这个。需指定类名::成员变量访问。
子类有两个及多个父类,重名也并不影响。要是不等待编译器是谁的成员,编译器自己找一个。
此继承比较复杂,因有两个或多个父类,需维护多个首地址。父类排放有前后,就有了多个父类首地址;
继承后 private 也被复制过来了,只是编译器不让用。其实通过指针的++也可以访问,不建议。