c++派生类问题

[复制链接]
查看11 | 回复0 | 2007-9-19 08:51:49 | 显示全部楼层 |阅读模式
首先定义一个基类P,包含两个私有成员pri1,pri2;并且定义了一个2参数的构造函数和两个变量的自增函数,还有一个显示函数disp然后定义D1继承P,则D1含有成员pri1,pri2;但是它看不到这两个成员,但可以通过基类函数来操作它们,然后它又新加一个成员pri3;定义了一个3参数的构造函数,并把其中两个参数传给积累P的两个成员,重载了基类函数inc1和disp,增加了函数inc3D2类类似继承P,增加成员pri4和函数inc4,重载函数inc1和disp,在inc1中调用基类P的两个成员函数操作pri1和pri2;D12继承D1和D2,则它含有D1和D2的成员,因为P不是虚基类,所以D12含有两份pri1,pri2;和一个pri3,一个pri4,它又新加一个成员pri12class P //基类{ public : //公有成员P(int p1,int p2) //构造函数{ pri1=p1; pri2=p2; } int inc1 () //自增函数1{ return ++pri1; } int inc2() //自增函数2{ return ++pri2; } void disp () //显示函数{ cout<<"pri1="<<pri1<<"pri2="<<pri2<<endl; } private : int pri1,pri2; //2个私有成员}; class D1:private P //单一继承P{ public : D1(int p1,int p2,int p3):P(p1,p2) //构造函数,把p1,p2传给基类P的构造函数{ pri3=p3; } int inc1() //重载inc1{ return P::inc1(); //调用基类的inc1来操作pri1,因为pri1是P的私有成员,子类看不到私有成员,只有通过公有函数来操作它们} int inc3() //自增函数3{ return ++pri3; } void disp() //显示函数{ P::disp(); cout<<"pri3="<<pri3<<endl; } private: int pri3; //私有成员}; class D2:public P //同D1{ public : D2(int p1,int p2,int p4):P(p1,p2) { pri4=p4; } int inc1 () { P::inc1(); P::inc2(); return P::inc1(); } int inc4() { return ++pri4; } void disp () { P::disp(); cout<<"pri4="<<pri4<<endl; } private : int pri4; }; class D12 :private D1,public D2 //双继承{ public : D12 (int p11,int p12,int p13,int p21,int p22,int p23,int p):D1(p11, p12 ,p13),D2(p21,p22,p23) //构造函数{ pri12=p; } int inc1() //重载inc1{ D2::inc1(); return D2::inc1(); return D2::inc1(); } int inc5() //自增函数5{ return ++pri12; } void disp () //显示{ cout<<"D2::disp()"<<endl; D2::disp(); cout<<"pri12="<<pri12<<endl; } private: int pri12; //私有成员}; void main () //主函数{ D12 d(1,2,3,4,5,6,7); d.disp(); d.inc1(); d.inc4(); d.inc5(); d.D12::inc1(); //与d.inc1(); 相同d.disp(); }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行