Commit 9db5a3f6 authored by Hans Buchmann's avatar Hans Buchmann

Pointer as reference

 no copy constructor
parent c8635534
......@@ -14,7 +14,8 @@ class Point
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
double distance(Point* other); //non static instance method
// |------------- pointer
private:
double xc; //x-coordinate
double yc; //y-coordinate
......@@ -36,13 +37,6 @@ Point::Point(const Point& other)
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()
{
......@@ -55,50 +49,36 @@ double Point::distance(Point p,Point q)
// |----|----|----|----------------private
}
double Point::distance(Point other) //copy constructor
double Point::distance(Point* other)
{
return std::hypot(other.xc - xc,
other.yc - yc);
} //destructor of other
/* hack
other->xc=0;
other->yc=0;
*/
return std::hypot((*other).xc - xc,
other->yc - yc);
/* other notation
(*other).yc <---> other->yc
*/
}
/*
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);
auto d=p.distance(q); //other = q copy constructor
auto d=p.distance(&q); //other = pointer to q
//|--------------- address of
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