I believe the rule was that the compiler would write a constructor, destructor, copy constructor, and assignment operator if and only if you did not write any one of those yourself. Which boils down totreating classes like structs, but you are still limited by the fact that you shouldn't use pointers as members of such a construct:
Code:
class mouse {
public:
double height;
double kilos;
enum COLOR fur;
char *name;
};
What have you. Unfortunately, since you opted to give your pet mouse a name, mice can't be copied correctly. The compiler only writes a copy constructor that does *new = *old; leaking the old memory.
So, do you have to provide a constructor and destructor? Almost always. And some other stuff too.