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