Objects in C++

class Shape {
   private:
      int x, y;
   public:
      Shape() { x = y = 0;} 
      Shape(int startx, int starty)
      {
            x = startx; y = starty;
      }
      int operator=(Shape &s) {
           return (within_one_percent(this.x, x) && within_one_percent(y, s.y));
      }
      ~Shape() {};
      void Draw();
};

class Circle:  public Shape {
    private:
      int radius;
    public:
      Circle(int r, int x1, int y1) : Shape(x1,y1) {
            radius = r;
      }
      void Draw();
      void Draw(float scale);
};
class Rect:  public Shape {
    private:
       int Hsize, Vsize;
    public:
       Square(int h1, int v1, int x1, int y1): Shape(x1,y1) {
             Hsize = h1; Vsize = v1;
       }
       void Draw();
};
Constructors
Constructors are just functions with no return type and named after the class.
There can be more than on e constrcutor.
Constructors are called in order of the inheritance tree.
Parameters can be supplied up the inheritance tree as shown above.
An implicit 'no parameter' constrcor is made unless you offer one (but what if it's protected??)
An implicit 'copy constructor' is made unless you offer one yourself.
      Used of assignment, argument passing, etc.
An implicit destrcutor is made unless you offer one yourself.
Permissions
Public means anyone can access it.
Private means only member functions of the class can access it.
Protected means only member functions of the class and derived classes can access it.
Functions
Can have the same name if they differ by argument type.
Cannot have the same name if they differ only by return value.