- //============================================================================
- // Name : main.cpp
- // Author : sg131971
- // Version :
- // Copyright : sg131971@qq.com
- // Description : Hello World in C++, Ansi-style
- //============================================================================
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- A()
- {
- cout << __LINE__ << ": " << "1" << endl;
- }
- virtual ~A()
- {
- cout << __LINE__ << ": " << "2" << endl;
- }
- virtual int Add(int n)
- {
- return 0;
- }
- };
- class B:public A
- {
- public:
- B(int n):num(n)
- {
- }
- virtual ~B()
- {
- }
- virtual int Add(int n)
- {
- num += n;
- return num;
- }
- private:
- int num;
- };
- class C:public A
- {
- public:
- C(A& obj, int n):a(obj), num(n)
- {
- cout << __LINE__ << ": " << "3" << endl;
- }
- virtual ~C()
- {
- cout << __LINE__ << ": " << "4" << endl;
- }
- virtual int Add(int n)
- {
- return a.Add(n + num);
- }
- private:
- A& a;
- int num;
- };
- int main()
- {
- B b(100);
- C c1(b, 1), c2(c1, 2);
- cout << __LINE__ << ": " << c2.Add(50) << endl;
- return 0;
- }
- 17: 1
- 17: 1
- 54: 3
- 17: 1
- 54: 3
- 73: 153
- 58: 4
- 21: 2
- 58: 4
- 21: 2
- 21: 2