C++ освоение наследования с открытым, защищенным и частнымC++

Программы на C++. Форум разработчиков
Anonymous
C++ освоение наследования с открытым, защищенным и частным

Сообщение Anonymous »

Это то, что я понимаю, и я призываю вас исправить меня, пожалуйста:
Правила видимости наследования классов C ++ важны, если классы наследуют несколько раз, правильно? < /p>

Код: Выделить всё

class Base {
public :
int a;
protected :
int b;
private :
int c;
};

class Layer_1 : private Base {  /* everything from ´Base´ is now */
int z{Base::a};             /* considered a private of ´Layer_1´ */
int r{Base::b};             /* but accessible here */
};

class Layer_2 : Layer_1 {   /* Nothing in ´Layer_1´ is accessible from */
int y{Layer_1::a};      /* ´Layer_2´,as ´Layer_1´ inherited everything */
};  // invalid ~~~~^        /* from ´Base´ into their private scope */
  • Есть ли у них какая-либо другая цель?
  • Это нужно использовать осторожно, поскольку я наследую класс как защищенный Я не могу снова стать общедоступным и т. д. Верно?
  • Если у меня есть только классы Base и Layer, это на самом деле не имеет значения, как я наследую от Base, поскольку я не наследую от Layer, верно?
  • Существуют ли какие-либо известные соглашения или отраслевые стандарты того, как и когда использовать общедоступный/защищенный/частный доступ, или это должно решаться в каждом отдельном случае, и нет никакого 'правило'?
Надеюсь, это не дубликат. Я посмотрел, но не нашел для меня вопроса, отвечающего на этот конкретный вопрос.
Я был немного сбит с толку и озадачен, когда не смог точно определить закономерность того, как использовать разные ключевые слова.

Подробнее здесь: https://stackoverflow.com/questions/793 ... nd-private

Вернуться в «C++»