После многих лет программирования на C, я делаю свои первые шаги на C ++.
Я пытаюсь asp оттачивать «защищенную» концепцию, и есть много материала в Интернете, где объясняется, что такое переменные protected
и для чего они используются. Однако при попытке написать пример super-basi c, просто чтобы запачкать руки с помощью C ++, я столкнулся с ошибкой:
error: 'int parent :: protected1' is protected в этом контексте
Итак, небольшая помощь будет оценена.
class parent {
public:
int getProtected() { return protected1; }
protected:
int protected1;
};
class child: public parent { };
int main()
{
child ch;
cout << ch.protected1 << endl; // error: 'int parent::protected1' is protected within this context
cout << ch.getProtected() << endl; // OK
return 0;
}
Везде говорится, что protected
переменные доступны только в иерархии наследования. Если это так, я пытаюсь понять - что я здесь делаю не так?
Понятие «защищенная переменная» на самом деле не укоренилось. private
хорошо понимается как частная Переменная принадлежит дочернему экземпляру и поэтому доступна только дочерним методам. Однако, если дочерний элемент может получить доступ к переменной protected
родителя, означает ли это, что родительский объект должен быть создан, прежде чем ребенок сможет получить доступ к этой переменной protected
?