is-a、has-a和like-a、组合、聚合和继承 两组概念的区别 - cbk861110的专栏 - 博客频道 -CSDN.NET http://blog.csdn.net/cbk861110/article/details/9028189
公有继承强调的是is-a的关系,强调的是一种继承关系,而has-a强调的是一种从属关系。
继承的形式为: class derived:public based
公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,只能通过基类的公有或保护成员访问。
派生类无妨继承基类的构造函数,因此,派生类必须定义自己的构造函数。
派生类构造函数在使用时:
1、必须先调用基类构造函数创建基类 Derived::Derived(....):Based( ){....}
2、派生类构造函数可以通过成员初始化列表将基类的信息传递给基类构造函数。
3、派生类构造函数应初始化派生类新增的数据成员
派生类过期时,必须先调用派生类的析构函数,在调用积累的析构函数 Derived::~Derived(){...... ~baesd();}
派生类与基类之间的关系
1、派生类只能调用基类的公有成员,对于私有成员则只能通过基类的公有成员或保护成员调用
2、基类指针和引用可以在不进行显示转换的情况下指向派生类对象,即:
①形参为基类引用(或指针)的函数,可以使用基类对象(的地址)或者派生类对象(的地址)作为实参
②可以用派生类对象初始化基类对象
3、基类引用或指针只能用于调用基类方法,不能用于调用派生类的方法