Some programmers consistently define an empty constructor and destructor in their classes, as in:
class A{//..public: A() {} ~A() {}};
This is totally useless. C++ guarantees that when a class needs any of the four special member functions (default constructor, copy constructor, assignment operator and destructor), the compiler will synthesize it, unless the programmer explicitly declared it. In the example above, the programmer defined empty constructor and destructor although the class clearly doesn’t need any of these. Hadn’t the programmer declared these member functions, the class would have been more compact and easier to maintain. Furthermore, this practice violates a common C++ principle: Don’t write code that the compiler can generate correctly by itself