Изучаю C++ для себя, непонятные для себя места конспектирую - помогает неплохо запоминать + сделать заметку в понятной для себя форме. Много раз начинал и забрасывал, так что некоторый объем знаний есть. это так, на заметку. надеюсь поможет таким же начинающим, просто шпаргалка
Доступ к данным в случае наследования.
В случае наследования класса, объявленного как public, пример:
class manager : public employee
методы класса имеют доступ к данным родительского класса, объявленным как public и protected.
Пример:
Родительский класс:
class a {
private:
int privdata;
protected:
int protdata;
public:
int pubdata;
};
Производный класс:
class b : public a {
void funct() {
int a;
a = protdata;
a = pubdata;
};
};
В данном случае, у функции funct() есть доступ к protdata и pubdata. Однако, у самого объекта производного класса есть доступ только к данным, объявленным как public. Пример:
int main() {
int a;
b objectB;
a = objectB.pubdata;
a = objectB.protdata; // ошибка, нет доступа к данным
В случае наследования класса, объявленного как private, пример:
class manager : private employee
методы класса имеют доступ к данным родительского класса, объявленным как public и protected.
Пример:
Родительский класс:
class a {
private:
int privdata;
protected:
int protdata;
public:
int pubdata;
};
Производный класс:
class b : private a {
void funct() {
int a;
a = protdata;
a = pubdata;
};
};
В данном случае, у функции funct() есть доступ к protdata и pubdata. Однако, у самого объекта производного класса нет доступа ни к каким данным родительского класса. Пример:
int main() {
int a;
b objectB;
a = objectB.pubdata; // ошибка, нет доступа к данным
a = objectB.protdata; // ошибка, нет доступа к данным