Advertisement
karol_dziachan

CNumber

Jan 22nd, 2021
1,609
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.70 KB | None | 0 0
  1.  
  2. #include "CNumber.h"
  3. #include <iostream>
  4. #include "const.h"
  5.  
  6. using namespace std;
  7.  
  8. CNumber::CNumber()
  9. {
  10.     d_value = new double;
  11.     *d_value = DEFAULT_VALUE_DOUBLE;
  12. }
  13.  
  14. CNumber::CNumber(double d_val)
  15. {
  16.     d_value = new double;
  17.     *d_value = d_val;
  18.  
  19. }
  20.  
  21. CNumber::CNumber(const CNumber& obj)
  22. {
  23.     d_value = new double;
  24.     *d_value = *obj.d_value;
  25. }
  26.  
  27. CNumber::CNumber(CNumber&& obj)
  28. {
  29.     d_value = obj.d_value;
  30.     obj.d_value = NULL;
  31. }
  32.  
  33.  
  34. CNumber :: ~CNumber()
  35. {
  36.     if (d_value != NULL);
  37.         delete d_value;
  38. }
  39.  
  40.  
  41. void CNumber::vPrint()
  42. {
  43.     cout << (*d_value) << endl;
  44. }
  45.  
  46. void CNumber :: operator=(CNumber&& obj)
  47. {
  48.  
  49.     if (this != &obj)
  50.     {
  51.         if (d_value != NULL) delete d_value;
  52.  
  53.         d_value = obj.d_value;
  54.         obj.d_value = nullptr;
  55.     }
  56. }
  57.  
  58. void CNumber :: operator= (const CNumber& obj)
  59. {
  60.     *(d_value) = *(obj.d_value);
  61. }
  62.  
  63. CNumber CNumber :: operator* (const CNumber& obj)
  64. {
  65.     CNumber c_result((*obj.d_value) * (*this->d_value));
  66.     return c_result;
  67. }
  68.  
  69. CNumber CNumber :: operator* (int d_val)
  70. {
  71.     CNumber c_result(d_val * (*this->d_value));
  72.     return c_result;
  73. }
  74.  
  75. CNumber CNumber :: operator+ (const CNumber& obj)
  76. {
  77.     CNumber c_result((*obj.d_value) + (*this->d_value));
  78.     return c_result;
  79. }
  80.  
  81.  
  82. CNumber CNumber :: operator- (const CNumber& obj)
  83. {
  84.     CNumber c_result((*obj.d_value) - (*this->d_value));
  85.     return c_result;
  86. }
  87.  
  88. void CNumber :: operator+= (const CNumber& obj)
  89. {
  90.     *(this->d_value) = *(this->d_value) + (*obj.d_value);
  91. }
  92.  
  93. void CNumber :: operator*= (double d_val)
  94. {
  95.     *(this->d_value) = *(this->d_value) * d_val;
  96. }
  97.  
  98. void CNumber::vSet(double d_val)
  99. {
  100.     *d_value = d_val;
  101. }
  102.  
  103. ostream&  operator << (ostream& os, const CNumber& dt)
  104. {
  105.     os << *(dt.d_value);
  106.     return os;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement