Wednesday, November 23, 2011

Final Class in C++

A class in Java is said to be final class if it can't be inherited by any other class. In C++, language has no built in feature to implement this. This has to be implemented by the developer.
  • By making the destructor private 
    • In this case, the object can only be created in heap by some static function defined in the class. Similarly a function must be implemented for destruction of object.
    • If we create object on stack, stack unwinding needs the destructor to be accessible. Hence compiler won't allow this.
    • Let's look at the following code.
    • Here no class can inherit F as the destructor is private. During child class object destruction, parent class destructor can't be called. Because parent class destructor is private.

  • By friend class
    • In this case, the object can be created on stack. 
    • Here we will need a dummy class whose destructor is private. The Final class must be a friend of this class and the Final class will inherit from dummy class.
    • We can create the object of Final class. As Final class is the friend of dummy class, it will have access to it's destructor. 
    • But if any class(Child) inherits Final Class, then it won't compile because destructor of temp is not accessible inside Child class.
    • Let's look at the following code

No comments:

Post a Comment