派生类从基类继承的过程可以分为三步:吸收基类成员、修改基类成员和添加新成员。吸收基类成员是代码复用,而修改和增加新成员则是对原有代码的扩展。代码利用和扩展是继承与派生的主要目的。1、吸收基类成员class B { public: B(); ~B(); int GetVal(); private: int a,b; }; class D :public B { public: D(); ~D(); int GetVal();//修改函数,同名覆盖 private: int c,d; //新增成员 };
派生类从基类继承时首先吸收基类成员,除构造和析构以外的所有成员全部吸收。需要注意的是,基类的构造和析构函数不能被派生类继承。
2、修改基类成员 修改基类成员的方式有两种。一是通过设置派生类声明中的继承方式,从而改变由基类继承而来成员的访问属性。二是派生类中声明与基类同名数据或函数函数成员,以覆盖基类中相应的数据或函数。
3、添加新成员 代码扩展是继承与派生的主要目的之一,添加新成员是派生类在基类基础上扩展的关键。如上述代码中新增加的c,d成员。 需要注意的是,派生类不能从基类继承构造函数和析构函数。但派生类同样需要有初始化和清理,所以我们要为派生类添加新的构造了析构函数。