Как остановить наследование класса?
Согласно информации из интернета есть два способа создать окончательный класс:-
1. используя ключевое слово "final" после имени класса(c++11)
class end final { };
2. создав предфинальный класс с частным конструктором, сделав конечный класс другом предфинального класса и фактически унаследовав предфинальный класс в конечном классе.
class preFinal { preFinal(){} friend class FINAL; }; class FINAL:virtual public preFinal //No class can derive this class. { }; class Derived:public FINAL //Compilation error,private constructor of preFinal class {};
Но третий вариант, который я могу придумать, заключается в том, что если мы определяем конструктор в частном порядке, то мы также не можем наследовать класс, как показано ниже:-
class Final { Final(){} }; class Derived:public Final{ //This will give error as Final constructor is in private. }; int main() { Final fo; }
Что я уже пробовал:
Тогда зачем нам нужно окончательное ключевое слово или создавать предфинальный класс(Вариант-2)?
Может ли кто - нибудь сообщить мне о любом случае, в котором мы можем наследовать класс с частным конструктором?