besides the constructor, we also need to strictly void creating new instances whenever the copy constructor could be used (maybe e.g. the object is passed as a parameter to a function).