Does a class have to have a public constructor? Can it have only private constructors? Does it prevent creation of objects (unless the class has a friend class or a friend function that uses its private constructors) ?
A class with only non-public constructors cannot be constructed directly by a user. A class with only non-public destructors cannot be destroyed directly by a user.
There are applications for both. (Singleton, for example).