从一个类派生出另一个类,原始类被称为基类,继承类被称为派生类
例:
冒号说明了Ship的基类是player,public表示了这个基类是公有基类,这被成为公有派生.使用公有基类,基类的公有成员将成为派生类的公有成员,基类的私有成员也将成为派生类的一部分但是不能直接访问,需要通过继承的基类的公有方法来间接访问.
创建派生类对象的时候,首先创造基类对象,C艹使用成员列表初始化完成该工作:
在第二个构造函数中 由于基类类型为 player & ,因此将会调用基类的复制构造函数,由于基类没有该函数,则编译器将会自动生成一个~
基类对象首先被创建.派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数
派生类和基类之间的特殊关系
基类指针或引用可以在不进行显式类型转换的情况下,指向或引用派生类对象或引用.然而基类指针和引用只能用于调用基类方法.所以不能用它们来调用派生类方法,如果将基类对象和地址赋值给派生类引用和指针.因为派生类引用可以为基类对象调用派生类方法,但是基类没有派生类的成员所以这么做是没意义的.
可以这么写:
但是如果基类引用和指针可以指向派生类对象呢?
函数Show的形参为一个基类引用,他可以指向基类对象或者派生类对象,并且该函数使用了基类的一个方法,所以Show可以使用player参数或者Ship参数.