\section{CONSTRUCTORS Class Constructors}

\subsection{Usage}

When designing a constructor for a FreeMat class, you should
design the constructor to take a certain form.  The following
is the code for the sample \verb|mat| object 
\begin{verbatim}
function p = mat(a)
  if (nargin == 0)
    p.c = [];
    p = class(p,'mat');
  elseif isa(a,'mat')
    p = a;
  else
    p.c = a;
    p = class(p,'mat');
  end
\end{verbatim}
Generally speaking when it is provided with zero arguments, the
constructor returns a default version of the class using a template
structure with the right fields populated with default values.  If
the constructor is given a single argument that matches the class
we are trying to construct, the constructor passes through the
argument.  This form of the constructor is used for type conversion.
In particular, 
\begin{verbatim}
   p = mat(a)
\end{verbatim}
guarantees that \verb|p| is an array of class \verb|mat|.  The last form
of the constructor builds a class object given the input.  The
meaning of this form depends on what makes sense for your class.
For example, for a polynomial class, you may want to pass in the
coefficients of the polynomial.
