Task

Create two classes   Point(x,y)   and   Circle(x,y,r)   with a polymorphic function print, accessors for (x,y,r), copy constructor, assignment and destructor and every possible default constructors




import std.stdio: writeln;
 
class Point {
    private int x, y;
    this(int x_=0, int y_=0) { x = x_; y = y_; }
    this(Point p_) { x = p_.getX(); y = p_.getY(); }
    int getX() { return x; }
    void setX(int x_) { this.x = x_; }
    int getY() { return y; }
    void setY(int y_) { this.y = y_; }
}
 
class Circle : Point {
    private int r;
    this(int x_=0, int y_=0, int r_=0) {
        super(x_, y_);
        r = r_;
    }
    this(Point p, int r_=0) {
        super(p);
        r = r_;
    }
    this(Circle c_) {
        super(c_.getX(), c_.getY());
        r = c_.getR();
    }
    int getR() { return r; }
    void setR(int r0) { this.r = r0; }
}
 
void main() {
    auto p = new Point();
    auto c = new Circle();
    writeln(p);
    writeln(c);
}