1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn = 2e5+100;
4 class Base
5 {
6 public:
7 Base();
8 Base(int a);
9 Base(const Base& other);
10 Base& operator = ( const Base &other);
11 Base(Base &&other);
12 Base& operator = (Base&& other);
13 ~Base();
14 protected:
15 int getMemberB()
16 {
17 return memberB;
18 }
19 int deleteC(int a,int b = 100,bool test = true);
20 private:
21 int memberA;
22 int memberB;
23 static const int size = 512;
24 int *pMemberC;
25 };
26 class VirtualBase
27 {
28 public:
29 VirtualBase() = default;
30 virtual ~VirtualBase()
31 {
32 cout<<"in virtialBase:~VirtualBase"<<endl;
33 }
34 virtual void test1(bool test)
35 {
36 cout<<"in virtualBase:testBase1"<<endl;
37 }
38 virtual void test2(int x,int y)=0;
39 void test3(){
40 cout<<"in virtualBase:test3"<<endl;
41 }
42 int vbx;
43 int vby;
44 };
45 class Derived : private Base,public VirtualBase
46 {
47 public:
48 Derived(int x,int y):
49 Base(x),VirtualBase(),mY(y)
50 {
51 };
52 virtual ~Derived()
53 {
54 cout<<"in Derived:~Derived"<<endl;
55 }
56 public:
57 void test1(bool test)override
58 {
59 cout<<"in Derived::test1"<<endl;
60 }
61 void test2(int x,int y) override
62 {
63 cout<<"in Derived::test2"<<endl;
64 }
65 void test3()
66 {
67 cout<<"in Derived::test3"<<endl;
68 }
69 private:
70 int mY;
71 };
72 int main()
73 {
74 Derived d(1,1);
75 cout<<"reference test ============"<<endl;
76 VirtualBase& vb = d;
77 vb.test1(true);
78 vb.test2(0,-1);
79 vb.test3();
80 d.test3();
81 // cout<<"pointer test ============="<<endl;
82 // VirtualBase* pvb= new Derived (1,2);
83 // pvb->test1(false);
84 // pvb->test2(-1,0);
85 // pvb->test3();
86 // delete pvb;
87 return 0;
88 }