From 49f35bdd02eacf465a3d12a3225945d0061ce4bf Mon Sep 17 00:00:00 2001
From: Hans Buchmann <hans.buchmann@fhnw.ch>
Date: Thu, 19 Nov 2020 11:21:49 +0100
Subject: [PATCH] copy constructor numer of constructor calls == numer of
destructor calls
---
6-cia/src/geo2d-vz.cc | 34 ++++++++++++++++++++++++++++++----
1 file changed, 30 insertions(+), 4 deletions(-)
diff --git a/6-cia/src/geo2d-vz.cc b/6-cia/src/geo2d-vz.cc
index a83e293e..8c93f0ed 100644
--- a/6-cia/src/geo2d-vz.cc
+++ b/6-cia/src/geo2d-vz.cc
@@ -13,7 +13,8 @@ class Point
public:
Point(double x,double y); //constructor x/y position in the plane
//non default constructor
- ~Point(); //destructor no parameters
+ Point(const Point& other); //copy constructor
+ ~Point(); //destructor no parameters
double distance(Point other);
static double distance(Point p,Point q);
@@ -32,6 +33,12 @@ Point::Point(double x,double y) //x,y parameter
std::cout<<"constructor of Point "<<xc<<","<<yc<<"\n";
}
+Point::Point(const Point& other)
+:xc(other.xc),yc(other.yc)
+{
+ std::cout<<"copy constructor of Point "<<xc<<","<<yc<<"\n";
+}
+
Point::~Point()
{
std::cout<<"destructor of Point "<<xc<<","<<yc<<"\n";
@@ -47,10 +54,30 @@ double Point::distance(Point other) //is a member of Point
{
return std::hypot(xc-other.xc,
yc-other.yc);
-}
+} //destructor of other
//---------------------------------------------- Line
+
+/*
+constructor of Point 3,4 p
+constructor of Point 6,8 q
+destructor of Point 6,8 other
+d=5
+destructor of Point 6,8 q
+destructor of Point 3,4 p
+*/
+
+/* with own copy constructor
+constructor of Point 3,4 p
+constructor of Point 6,8 q
+copy constructor of Point 6,8 other
+destructor of Point 6,8 other
+d=5
+destructor of Point 6,8 q
+destructor of Point 3,4 p
+*/
+
int main(int argc,char**args)
{
Point p(3,4);
@@ -58,8 +85,7 @@ int main(int argc,char**args)
/*
distance (3,4) -> (6,8) = sqrt(3*3+4*4)=sqrt(25)=5
*/
- auto d0=Point::distance(p,q); //with static
- auto d1=p.distance(q); //non static
+ auto d1=p.distance(q);
std::cout<<"d="<<d1<<"\n";
return 0;
}
--
GitLab