prog16.cpp
来自「C++语言程序设计题典」· C++ 代码 · 共 86 行
CPP
86 行
#include <iostream.h>
class base //虚基类
{
private:
int m,n;
public:
base(int p1,int p2)
{
m=p1;n=p2;
}
int inc1() { return ++m; }
int inc2() { return ++n; }
void disp()
{
cout << "m=" << m << ",n=" << n << endl;
}
};
class derive1:virtual private base //从虚基类派生
{
private:
int i;
public:
derive1(int p1,int p2,int p3):base(p1,p2)
{
i=p3;
}
int inc1() { return base::inc1(); }
int inc3() { return ++i; }
void disp()
{
base::disp();
cout << "i=" << i << endl;
}
};
class derive2:virtual public base //从虚基类派生
{
private:
int j;
public:
derive2(int p1,int p2,int p4):base(p1,p2)
{
j=p4;
}
int inc1()
{
base::inc1();
base::inc1();
return base::inc1();
}
int inc4() { return ++j; }
void disp()
{
base::disp();
cout << "j=" << j << endl;
}
};
class derive12:private derive1,public derive2
{
private:
int k;
public:
derive12(int p11,int p12,int p13,int p21,int p22,int p23,int p)
:derive1(p11,p12,p13),derive2(p21,p22,p23),base(p11,p21)
{
k=p;
}
int inc1() { return base::inc1(); }
int inc5() { return ++k; }
void disp()
{
cout << "derive1::disp()" << endl;
derive1::disp();
cout << "derive2::disp()" << endl;
derive2::disp();
cout << "k=" << k << endl;
}
};
void main()
{
derive12 d(10,20,30,40,50,60,70);
d.disp();
d.inc1();
d.derive2::inc1();
d.disp();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?