# include <iostream>
using namespace std ;
class Point {
int x, y ;
public:
Point(int x=0, int y=0) {
this->x = x ; this->y = y ;
cout << "\tPoint " ; print() ; cout << " constructed." << endl ;
}
~Point() { cout << "\tPoint " ; print() ; cout << " destructed." << endl ; }
void print() const { cout << "(" << x << ", " << y << ")" ; }
} ;
class Rectangle {
Point rightBottom, leftTop ;
public:
Rectangle(const Point& p1, const Point& p2=Point(0,0)) : leftTop(p1), rightBottom(p2) {
cout << "Rectangle: " ; print() ; cout << " constructed." << endl ;
}
Rectangle(int x1, int y1, int x2=0, int y2=0) : leftTop(x1, y1), rightBottom(x2, y2) {
cout << "Rectangle: " ; print() ; cout << " constructed." << endl ;
}
Rectangle() { cout << "Rectangle: " ; print() ; cout << " constructed." << endl ; }
~Rectangle() { cout << "Rectangle: " ; print() ; cout << " destructed." << endl ; }
void print() const { leftTop.print() ; rightBottom.print() ; }
} ;
int main(){
Point p(2, 2);
Rectangle r2(p);
}
Results of
I added a little more logs and tried to run them.
The compiler used VS2015.
# # include <iostream>
using namespace std;
class Point {
int x, y;
public:
Point(int x = 0, int y = 0) {
this->x = x; this->y = y;
cout << "\tPoint "; print(); cout << " constructed." << endl;
}
~Point() { cout << "\tPoint "; print(); cout << " destructed." << endl; }
void print() const { cout << "(" << x << ", " << y << ") " << this ; }
};
class Rectangle {
Point rightBottom, leftTop;
public:
Rectangle(const Point& p1, const Point& p2 = Point(0, 0)) : leftTop(p1), rightBottom(p2) {
cout << "Rectangle: "; print(); cout << " constructed." << endl;
}
Rectangle(int x1, int y1, int x2 = 0, int y2 = 0) : leftTop(x1, y1), rightBottom(x2, y2) {
cout << "Rectangle: "; print(); cout << " constructed." << endl;
}
Rectangle() { cout << "Rectangle: "; print(); cout << " constructed." << endl; }
~Rectangle() { cout << "Rectangle: "; print(); cout << " destructed." << endl; }
void print() const { leftTop.print(); rightBottom.print(); }
};
int main() {
Point p(2, 2);
cout << "1-------1-------1-------" << endl;
{
Rectangle r2(p);
cout << "2-------2-------2-------" << endl;
}
cout << "3-------3-------3-------" << endl;
}
Here's the result.
1| Point (2, 2) 00AFFBA0 constructed.
2| 1-------1-------1-------
3| Point (0, 0) 00AFFAB8 constructed.
4| Rectangle: (2, 2) 00AFFB90(0, 0) 00AFFB88 constructed.
5| Point (0, 0) 00AFFAB8 destructed.
6| 2-------2-------2-------
7| Rectangle: (2, 2) 00AFFB90(0, 0) 00AFFB88 destructed.
8| Point (2, 2) 00AFFB90 destructed.
9| Point (0, 0) 00AFFB88 destructed.
A| 3-------3-------3-------
B| Point (2, 2) 00AFFBA0 destructed.
© 2024 OneMinuteCode. All rights reserved.