Защищенные члены данных и функции данных - PullRequest
4 голосов
/ 15 декабря 2010

когда я объявляю защищенный элемент данных в классе, это означает, что он недоступен для внешнего мира, но является производным классом. Мой вопрос

будет ли он доступен для класса, производного от производного класса?

Ответы [ 3 ]

6 голосов
/ 15 декабря 2010

Да, защищенные элементы данных доступны на всех уровнях иерархии наследования.

Защищенные данные обычно лучше избегать.Альтернативой является запись защищенных методов , которые обращаются к частным даннымЭто позволяет хранить данные в одном классе.Это также позволяет легко установить точку останова для изменений данных.

3 голосов
/ 15 декабря 2010

На самом деле защищенный элемент данных доступен только с использованием защищенного и публичного наследования.

Вот пример, где защищенный член недоступен в производном классе:

class Base  
{  
protected:  
int iBase;  
};

class Derived : private Base  
{  
// iBase not accessible  
};
2 голосов
/ 15 декабря 2010

Да. (Кстати, вы могли бы просто попробовать это).

...