c++派生类问题

来源:百度知道 编辑:UC知道 时间:2024/06/11 05:12:59
#include <iostream.h>
class P
{
public :
P(int p1,int p2)
{
pri1=p1;
pri2=p2;
}
int inc1 ()
{
return ++pri1;
}
int inc2()
{
return ++pri2;
}
void disp ()
{
cout<<"pri1="<<pri1<<"pri2="<<pri2<<endl;
}
private :
int pri1,pri2;
};
class D1:private P
{
public :
D1(int p1,int p2,int p3):P(p1,p2)
{
pri3=p3;
}
int inc1()
{
return P::inc1();
}
int inc3()
{
return ++pri3;
}
void disp()
{
P::disp();
cout<<"pri3="<<pri3<<endl;
}
private:
int pri3;
};
class D2:public P
{
public :
D2(int p1,int p2,int p4):P(p1,p2)
{
pri4=p4;
}
int inc1 ()
{
P::inc1();
P::inc2();
return P::inc1();
}
int inc4()
{

首先定义一个基类P,包含两个私有成员pri1,pri2;并且定义了一个2参数的构造函数和两个变量的自增函数,还有一个显示函数disp

然后定义D1继承P,则D1含有成员pri1,pri2;但是它看不到这两个成员,但可以通过基类函数来操作它们,然后它又新加一个成员pri3;定义了一个3参数的构造函数,并把其中两个参数传给积累P的两个成员,重载了基类函数inc1和disp,增加了函数inc3

D2类类似继承P,增加成员pri4和函数inc4,重载函数inc1和disp,在inc1中调用基类P的两个成员函数操作pri1和pri2;

D12继承D1和D2,则它含有D1和D2的成员,因为P不是虚基类,所以D12含有两份pri1,pri2;和一个pri3,一个pri4,它又新加一个成员pri12

class 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