fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. class Point
  5. {
  6. private:
  7. int x;
  8. int y;
  9.  
  10. public:
  11. Point() = default;
  12. Point(int x, int y)
  13. {
  14. this->x = x;
  15. this->y = y;
  16.  
  17. std::cout << "Constuctor in Point Class Called" << std::endl;
  18. }
  19.  
  20. int getX()
  21. {
  22. return x;
  23. }
  24. int getY()
  25. {
  26. return y;
  27. }
  28.  
  29. void setPoint(int nX, int nY)
  30. {
  31. x = nX;
  32. y = nY;
  33. }
  34.  
  35. void add(Point p)
  36. {
  37. x += p.x;
  38. y += p.y;
  39. }
  40.  
  41. int calculateDistance();
  42.  
  43. ~Point()
  44. {
  45. std::cout << "Destructor in Point Class" << std ::endl;
  46. }
  47. };
  48.  
  49. class Point3D : private Point
  50. {
  51. private:
  52. int z;
  53.  
  54. public:
  55. Point3D() = default;
  56.  
  57. Point3D(int x, int y, int z) : Point(x, y)
  58. {
  59. this->z = z;
  60. std::cout << "Constuctor in Point3D Class Called" << std::endl;
  61. }
  62.  
  63. int getZ()
  64. {
  65. return z;
  66. }
  67.  
  68. void setZ(int nZ)
  69. {
  70. z = nZ;
  71. }
  72.  
  73. void setDelegate(int x, int y)
  74. {
  75. setPoint(x, y);
  76. }
  77.  
  78. int deletegateX()
  79. {
  80. return getX();
  81. }
  82.  
  83. int deletegateY()
  84. {
  85. return getY();
  86. }
  87.  
  88. void add(Point3D p)
  89. {
  90. Point::add({p.getX(), p.getY()});
  91. z += p.z;
  92. }
  93.  
  94. int calculateDistance()
  95. {
  96. return sqrt((deletegateX() * deletegateX()) + (deletegateY() * deletegateY()) + (z*z));
  97. }
  98.  
  99. void display()
  100. {
  101. std::cout << getX() << getY() << z << std::endl;
  102. }
  103.  
  104. ~Point3D()
  105. {
  106. std::cout << "Destructor in Point3D Class" << std::endl;
  107. }
  108. };
  109.  
  110. int main()
  111. {
  112.  
  113. Point3D d;
  114. d.setDelegate(2, 3);
  115. d.setZ(6);
  116. d.display();
  117.  
  118. std::cout << "Delegated X: " << d.deletegateX() << std::endl;
  119. std::cout << "Delegated Y: " << d.deletegateY() << std::endl;
  120. std::cout << "Z: " << d.getZ() << std::endl;
  121.  
  122.  
  123. std::cout << "Distance: " << d.calculateDistance() << std::endl;
  124. return 0;
  125. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
236
Delegated X: 2
Delegated Y: 3
Z: 6
Distance: 7
Destructor in Point3D Class
Destructor in Point Class