/ch12/ch02/main.cpp

https://github.com/jinjianxin/My-Program · C++ · 151 lines · 101 code · 28 blank · 22 comment · 0 complexity · 74d479ba2579e7a95dedb024c13cb8ec MD5 · raw file

  1. #include <iostream>
  2. using namespace std;
  3. class Integer
  4. {
  5. public:
  6. Integer(int i);
  7. ~Integer();
  8. /*+*/
  9. Integer operator+(const Integer& in);
  10. Integer operator+(const Integer& in) const;
  11. // const Integer operator+(const Integer& in) const;
  12. // /*-*/
  13. Integer operator-(const Integer& in);
  14. Integer operator-(const Integer& in) const;
  15. /* * */
  16. Integer operator*(const Integer& in);
  17. Integer operator*(const Integer& in) const;
  18. /* / */
  19. Integer operator/(const Integer& in);
  20. Integer operator/(const Integer& in) const;
  21. /*++*/
  22. Integer operator++();
  23. Integer operator++(int);
  24. /*--*/
  25. Integer operator--();
  26. Integer operator--(int);
  27. //Integer operator++() const; error
  28. int objectCount;
  29. };
  30. Integer::Integer(int i):
  31. objectCount(i)
  32. {
  33. }
  34. Integer::~Integer()
  35. {
  36. }
  37. Integer Integer::operator+(const Integer& in)
  38. {
  39. return Integer(objectCount+in.objectCount);
  40. }
  41. Integer Integer::operator+(const Integer& in) const
  42. {
  43. return Integer(objectCount+in.objectCount);
  44. }
  45. /*
  46. const Integer Integer::operator+(const Integer& in) const
  47. {
  48. return Integer(objectCount+in.objectCount);
  49. }*/
  50. Integer Integer::operator-(const Integer& in)
  51. {
  52. return Integer(objectCount-in.objectCount);
  53. }
  54. Integer Integer::operator-(const Integer& in) const
  55. {
  56. return Integer(objectCount-in.objectCount);
  57. }
  58. /*
  59. Integer& Integer::operator+(const Integer& in)
  60. {
  61. Integer a(objectCount+in.objectCount);
  62. Integer& b =a;
  63. return b;
  64. }
  65. */
  66. Integer Integer::operator*(const Integer& in)
  67. {
  68. return Integer(objectCount*in.objectCount);
  69. }
  70. Integer Integer::operator*(const Integer& in) const
  71. {
  72. return Integer(objectCount*in.objectCount);
  73. }
  74. Integer Integer::operator/(const Integer& in)
  75. {
  76. return Integer(objectCount/in.objectCount);
  77. }
  78. Integer Integer::operator/(const Integer& in) const
  79. {
  80. return Integer(objectCount/in.objectCount);
  81. }
  82. Integer Integer::operator++()
  83. {
  84. ++objectCount;
  85. return *this;
  86. }
  87. Integer Integer::operator++(int)
  88. {
  89. objectCount++;
  90. return *this;
  91. }
  92. Integer Integer::operator--()
  93. {
  94. --objectCount;
  95. return *this;
  96. }
  97. Integer Integer::operator--(int)
  98. {
  99. objectCount--;
  100. return *this;
  101. }
  102. int main(int argc,char *argv[])
  103. {
  104. Integer a(10);
  105. Integer b(5);
  106. cout<<"operator +"<<"\ta+b="<<((a+b)+b).objectCount<<endl;
  107. cout<<"operator -"<<"\ta-b="<<(a-b).objectCount<<endl;
  108. cout<<"operator *"<<"\ta*b="<<(a*b).objectCount<<endl;
  109. cout<<"operator /"<<"\ta/b="<<(a/b).objectCount<<endl;
  110. cout<<"operator a++"<<"\ta++="<<(a++).objectCount<<endl;
  111. cout<<"operator ++a"<<"\t++a="<<++a.objectCount<<endl;
  112. cout<<"operator a--"<<"\ta--="<<a--.objectCount<<endl;
  113. cout<<"operator --a"<<"\t--a="<<--a.objectCount<<endl;
  114. cout<<endl;
  115. /*const*/
  116. const Integer d(3);
  117. const Integer c(2);
  118. cout<<"operator +"<<"\tc+d="<<(c+d).objectCount<<endl;
  119. cout<<"operator -"<<"\tc-d="<<(c-d).objectCount<<endl;
  120. cout<<"operator *"<<"\tc*d="<<(c*d).objectCount<<endl;
  121. cout<<"operator /"<<"\tc/d="<<(c/d).objectCount<<endl;
  122. return 0;
  123. }