fork download
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. int counter = 1; // счетчик. Для форматированного вывода экземпляров
  5.  
  6. class Pyramid {
  7. friend double Perimetr(const Pyramid& pyramid);
  8. public:
  9. double x, h, a; // x - сторона основания, h - высота, a - апофема
  10. Pyramid() {
  11. cout << endl << "--------------------------------------------------" << endl;
  12. cout << "Этот обьект был создан в конструкторе по умолчанию. Область: " << this << endl;
  13. x = h = a = 3;
  14. }
  15. Pyramid(double p, double k, double q) {
  16. cout << endl << "--------------------------------------------------" << endl;
  17. cout << "Этот обьект был создан в конструкторе с параметрами. Область: " << this << endl;
  18. x = p;
  19. h = k;
  20. a = q;
  21. }
  22. Pyramid(const Pyramid& obj) {
  23. cout << endl << "--------------------------------------------------" << endl;
  24. cout << "Этот обьект был создан в конструкторе копирования. Область: " << this << endl;
  25. this->x = obj.x;
  26. this->h = obj.h;
  27. this->a = obj.a;
  28. }
  29. Pyramid& operator=(const Pyramid& obj) {
  30. if (this != &obj) {
  31. this->x = obj.x;
  32. this->h = obj.h;
  33. this->a = obj.a;
  34. }
  35. return *this;
  36. }
  37. Pyramid operator+(const Pyramid& b) {
  38. Pyramid temp;
  39. temp.x = this->x + b.x;
  40. temp.h = this->h + b.h;
  41. temp.a = this->a + b.a;
  42. return temp;
  43. }
  44. void SHOW() {
  45. cout << endl << "--------------------------------------------------" << endl;
  46. cout << " p" << counter << "\tx --> " << x << ";\th --> " << h << ";\ta --> " << a << endl;
  47. }
  48. ~Pyramid() {
  49. cout << endl << "--------------------------------------------------" << endl;
  50. cout << "Удаление объекта в области " << this << " деструктором.\n";
  51. }
  52. private:
  53. double Sb = 10;
  54. };
  55.  
  56. double Perimetr(const Pyramid& pyramid);
  57.  
  58. int main() {
  59. setlocale(0, "");
  60. Pyramid p1, p2(2, 4, 6);
  61. p1.SHOW(); counter++;
  62. p2.SHOW();
  63. counter = 1;
  64.  
  65. p1 = p2;
  66. cout << "\nПриравнял p1 к p2 -->>\n";
  67. p1.SHOW(); counter++;
  68. p2.SHOW();
  69.  
  70. Pyramid p3 = p1 + p2;
  71. cout << "\nСложил p1 и p2 -->>\n";
  72. counter = 1;
  73. p1.SHOW(); counter++;
  74. p2.SHOW();
  75.  
  76. return 0;
  77. }
  78.  
  79. double Perimetr(const Pyramid& pyramid)
  80. {
  81. return (2 * pyramid.Sb) / pyramid.a; // формула из файла "Ф?ГУРИ"
  82. }
  83.  
Success #stdin #stdout 0s 4524KB
stdin
Standard input is empty
stdout
--------------------------------------------------
Этот обьект был создан в конструкторе по умолчанию. Область: 0x7ffe1f6a3950

--------------------------------------------------
Этот обьект был создан в конструкторе с параметрами. Область: 0x7ffe1f6a3970

--------------------------------------------------
  p1	x --> 3;	h --> 3;	a --> 3

--------------------------------------------------
  p2	x --> 2;	h --> 4;	a --> 6

Приравнял p1 к p2 -->>

--------------------------------------------------
  p1	x --> 2;	h --> 4;	a --> 6

--------------------------------------------------
  p2	x --> 2;	h --> 4;	a --> 6

--------------------------------------------------
Этот обьект был создан в конструкторе по умолчанию. Область: 0x7ffe1f6a3990

Сложил p1 и p2 -->>

--------------------------------------------------
  p1	x --> 2;	h --> 4;	a --> 6

--------------------------------------------------
  p2	x --> 2;	h --> 4;	a --> 6

--------------------------------------------------
Удаление объекта в области 0x7ffe1f6a3990 деструктором.

--------------------------------------------------
Удаление объекта в области 0x7ffe1f6a3970 деструктором.

--------------------------------------------------
Удаление объекта в области 0x7ffe1f6a3950 деструктором.