10_89.cpp
上传用户:zipjojo
上传日期:2009-07-20
资源大小:70k
文件大小:1k
源码类别:

文章/文档

开发平台:

C/C++

  1. #include<iostream.h>
  2. class A
  3. {
  4. public:
  5. int va;
  6. A(int i){va=i;}
  7. virtual A& operator+(A&);
  8. virtual A& operator=(A&);
  9. virtual int a(){return va;}
  10. virtual int b(){return 0;}
  11. virtual int c(){return 0;}
  12. void disp(){cout<<"va="<<va<<endl;}
  13. };
  14. class B:public A
  15. {
  16. public:
  17. int vb;
  18. B(int i,int j):A(i){vb=j;}
  19. virtual A& operator+(A&);
  20. virtual A& operator=(A&);
  21. virtual int b(){return vb;}
  22. void disp(){cout<<"vb="<<vb<<endl;}
  23. };
  24. class C:public B
  25. {
  26. public:
  27. int vc;
  28. C(int i,int j, int k):B(i,j){vc=k;}
  29. virtual A& operator+(A&);
  30. virtual A& operator=(A&);
  31. virtual int c(){return vc;}
  32. void disp(){cout<<"vc="<<vc<<endl;}
  33. };
  34. A& A::operator+(A& t)
  35. {
  36. va+=t.a();
  37. return *this;
  38. }
  39. A& A::operator=(A& t)
  40. {
  41. va=t.a();
  42. return *this;
  43. }
  44. A& B::operator+(A& t)
  45. {
  46. va+=t.a();
  47. vb+=t.b();
  48. return *this;
  49. }
  50. A& B::operator=(A& t)
  51. {
  52. va=t.a();
  53. vb=t.b();
  54. return *this;
  55. }
  56. A& C::operator+(A& t)
  57. {
  58. va+=t.a();
  59. vb+=t.b();
  60. vc+=t.c();
  61. return *this;
  62. }
  63. A& C::operator=(A& t)
  64. {
  65. va=t.a();
  66. vb=t.b();
  67. vc=t.c();
  68. return *this;
  69. }
  70. void addobject(A& ob1,A& ob2)
  71. {
  72. ob1=ob1+ob2;
  73. }
  74. void main()
  75. {
  76. A a(10);
  77. B b(20,30);
  78. C c(40,50,60);
  79. addobject(a,b);
  80. addobject(b,c);
  81. addobject(c,b);
  82. a=b+c;
  83. c=c+a;
  84. a.disp();
  85. b.disp();
  86. c.disp();
  87. }