## CONSTRUCTORS Class Constructors

Section: Object Oriented Programming

### 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 `mat` object

    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

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,

       p = mat(a)

guarantees that `p` is an array of class `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.