Source: https://people.computing.clemson.edu/~dhouse/courses/1070/lectures/Constructors.pdf