Commit c8635534 authored by Hans Buchmann's avatar Hans Buchmann

own copy constructor

parent bb4bdcaf
......@@ -11,6 +11,7 @@ class Point
{
public:
Point(double x,double y); //non-default constructor no return value
Point(const Point& other); //copy constructor
~Point(); //destructor never with parameters no return value
static double distance(Point p,Point q);
double distance(Point other); //non static instance method
......@@ -28,6 +29,21 @@ Point::Point(double x,double y)
std::cout<<"constructor Point "<<xc<<","<<yc<<"\n";
}
Point::Point(const Point& other)
:xc(other.xc),yc(other.yc)
{
std::cout<<"copy constructor Point "<<xc<<","<<yc<<"\n";
}
/* wrong copy constructor
Point::Point(const Point& other)
:xc(2*other.xc),yc(2*other.yc)
{
std::cout<<"copy constructor Point "<<xc<<","<<yc<<"\n";
}
*/
Point::~Point()
{
std::cout<<"destructor Point "<<xc<<","<<yc<<"\n";
......@@ -39,29 +55,50 @@ double Point::distance(Point p,Point q)
// |----|----|----|----------------private
}
double Point::distance(Point other)
double Point::distance(Point other) //copy constructor
{
return std::hypot(other.xc - xc,
other.yc - yc);
}
} //destructor of other
/*
with self made copy constructor
constructor Point 5,7
constructor Point 8,11
copy constructor Point 8,11
destructor Point 8,11
d=5
destructor Point 8,11
destructor Point 5,7
without own copy constructor
constructor Point 5,7
constructor Point 8,11
destructor Point 8,11 of instance other
d=5
destructor Point 8,11
destructor Point 5,7
with wrong copy constructor
constructor Point 5,7
constructor Point 8,11
copy constructor Point 0,0
destructor Point 0,0
d=8.60233
destructor Point 8,11
destructor Point 5,7
*/
//--------------------------- use case
int main(int argc,char** args)
{
Point p(5, 7);
Point q(8,11);
//distance p -> q sqrt(3*3 + 4*4)=sqrt(25)=5
//auto d=Point::distance(p,q);
auto d=p.distance(q);
// |----------|------------- instance
auto d=p.distance(q); //other = q copy constructor
std::cout<<"d="<<d<<"\n";
return 0;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment