如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第16章继承16.1继承概述16.1继承概述2.派生类的声明语法class派生类名:访问控制基类名{数据成员和成员函数声明};例如,汽车类vehicle和其派生类小车类car的定义:classvehicle{intwheels;//车轮数floatweight;//汽车重量public:voidinitialize(intin_wheels,floatin_weight);//初始化数据成员intget_wheels();//获取车轮数floatget_weight();//获取车重floatget_loading();//车轮承重};classcar:vehicle//缺省声明,私有继承{intpassenger_load://载客量public:voidinitialize(intin_wheels,floatin_weight,intpeople=4);intpassengers();//返回载客数};派生类对基类成员可以有不同的访问方式:派生类可以覆盖基类成员派生类不能访问基类私有成员公有继承基类的公有段和保护段成员访问权对派生类保持不变私有继承基类的公有段和保护段成员成为派生类的私有成员如果派生类定义了与基类同名的成员,称派生类的成员覆盖了基类的同名成员若要在派生类中使用基类同名成员,可以显式地使用类名限定符:类名::成员例:classbase{public:inta,b;};classderived:publicbase{public:intb,c;};voidf(){derivedd;d.a=1;d.base::b=2;//base::b使用的是base类的数据成员bd.b=3;//这里使用的是derived类的数据成员bd.c=4;};例:classX{public:voidget_ij();voidput_ij();private:inti,j;};classY:publicX{public:intget_k();voidmake_k();private:intk;};voidY::make_k();{k=i*j;//非法};classX{public:voidget_ij();voidput_ij();};classY:publicX{public:intget_k();voidmake_k();private:intk;};voidY::make_k();{};3.公有继承例://ex16_1classX{protected:inti,j;public:voidget_ij(){cout<<“Entertwonumbers:”;cin>>i>>j;};voidput_ij(){cout<<i<<“”<<j<<‘\n’;};};classY:publicX{intk;public:intget_k(){returnk;};voidmake_k(){k=i*j;};//使用基类成员i,j};classZ:publicY{public:voidf(){i=2;j=3;};//使用基类成员i,j};main(){Yvar1;Zvar2;var1.get_ij();var1.put_ij();var1.make_k();var2.f();var2.put_ij();}例://ex16_1classX{protected:inti,j;public:voidget_ij(){cout<<“Entertwonumbers:”;cin>>i>>j;};voidput_ij(){cout<<i<<“”<<j<<‘\n’;};};classY:publicX{intk;public:intget_k(){returnk;};voidmake_k(){k=i*j;};//使用基类成员i,j};classZ:publicY{public:voidf(){i=2;j=3;};//使用基类成员i,j};main(){Yvar1;Zvar2;var1.get_ij();var1.put_ij();var1.make_k();var2.f();var2.put_ij();}4.私有继承保护继承//ex16_2classX{protected:inti,j;public:voidget_ij(){cout<<“Entertwonumbers:”;cin>>i>>j;};voidput_ij(){cout<<i<<“”<<j<<‘\n’;};};class