2016-05-21 3 views
-11

Просьба предоставить простое решение для ограничения наследования в C++.Есть ли способ ограничить наследование?

+0

Кроме того, ваш вопрос слишком широк. Что означает «ограничение»? Наверное, вы уже знаете наследование на C++, так почему вы не объяснили, каким образом стандартные модификаторы вам недостаточны? –

+0

Google 'final' ключевое слово. – HolyBlackCat

ответ

0

Если вы действительно не хотите наследовать класс, тогда просто делайте его переменные-члены и функции-члены частными, если другой класс пытается наследовать его, они не могут иметь доступ к своим функциям и переменным в любом случае. Но использование final - лучший вариант

+0

Да, действительно, если вы не хотите, чтобы у вас был выход из класса, напишите его так, чтобы он ничего не делал полезным. Никто не сможет извлечь из этого никого, никто не хочет ** извлекать из него. –

2

Да! На C++ 11, есть final спецификатора вы можете использовать, чтобы указать, что класс не может быть унаследован от:

class DontInheritMe final { 
     // This class cannot be inherited from. 
}; 

Если у вас есть опыт в Java, то final ключевого слова в C++ в этом случае работает так же было как final классов в Java.

+0

Будьте в курсе, стоит упомянуть, что этот спецификатор также может быть помещен в виртуальный метод для предотвращения переопределений в производных классах. – HolyBlackCat

Смежные вопросы