Suppose you need to prevent the derivation of a classlike in the final classes of Java. Simply make the constructor of the class private. Here's an example:
class final
{
private:
final(){} ;
public:
static final* CreateInstance()
{
return (new final()) ;
}
} ;
/* UNCOMMENTing will give error because we've declared constructor of final class as private
class derived : public final
{
public:
derived()
{
}
} ;
*/
void main()
{
final *f ;
f = final::CreateInstance() ;
}