继承是代码复用的重要形式,也是面向对象中最重要的一部分。通过继承我们无需重头创建具有相似功能的类,直接可以复用已有类。C++中对于继承有二个角色关系。1.基类 2.派生类(即从基类中派生而来的类)。派生类从基类中继承所有的属性(除了构造函数,析构函数,赋值重载运算符三个例外)。基类中的所有属性都会得到传承。
如何理解C++中的private, protected, public三个访问说明符呢,他们之间有什么意义与作用呢?
public:即类的公有成份,基类的public成员在自己的类内是可以访问的,而且在程序中凡是出现基类或派生类的对象句柄(即基类或派生类对象的名字,引用或指针)处也是可以访问的。
private:即类的私有成份(可以是数据成员或成员函数)。private属性成员只能在此基类体内及友元函数中访问。不能在派生类中直接访问,需要调用相应的public/protected成员函数来访问。并且无法通过基类或派生类对象的句柄直接访问,visual c++会提示无权操作。
protected:即类的保护成份。作用处在private和protected之间。在基类内的成员函数或友元中可以直接访问,或在基类派生出的任何类的成员或友元中直接访问。并且无法通过基类或派生类对象的句柄直接访问,visual c++会提示无权操作。
对于从基类继承的成员函数,派生类如何来借用并实现自己的特定功能呢?(即成员函数中加入特定的功能)
在派生类的成员函数中借用基类同名成员函数时,我们需要在基类的成员函数前加上相应的基类说明符,并在其后加上二元::域作用符(显示指名调用基类的同名成员函数)。陷井点:此时如果忘记在相应函数前加上类名及二元::域作用符,会引起无限递归的调用要从基类继承完并实现特定功能的函数。
三种继承方式:1.public 2 private 3 protected
通常在相应的开发中很少用到private和protected方式的继承方式,一般都采用public方式。 采用public方式继承时,基类的private成员到派生类中还是private性质,基类的public成员到派生类中也是public性质,而protected成员到派生类中则还是相应的protected性质。则所有性质不会改变,基类是是什么性质则派生类中还是什么性质。注意点:基类的private成员在派生类中不能直接访问,但是可以调用基类中的public和protected成员来间接访问。
private,protected方式则不同,当用protected继承方式从基类派生一个类时,基类中的public和protected成员到派生类中则变为相应的protected性质。而private继承方式从基类派生一个类时,基类中的public和protected成员到派生类中则变为相应的private性质。