Читайте также: |
|
{
protected:
int i;
int j;
public:
void get_f(void);
void put_f(void);
};
class Y: public X // i, j класса Х стали protected членами в классе Y
{ int m;
public:
int get_m(void);
void make_m(void);
};
class Z: public Y // Z имеет доступ к переменным i, j класса Х
{ public: // Z не имеет доступа к m класса Y
void d(void);
};
void X:: get_f(void)
{ cout << "Введите два числа:" << "\n";
cin>>i>>j;}
void X::put_f(void)
{ cout << "i=" << i << "j=" << j << "\n";}
int Y::get_m(void)
{ return m;}
void Y::make_m(void)
{ m = i*j; }
void Z::d(void)
{ i = 5; j = 4;}
void main()
{
Y a;
Z b;
a.get_f();
a.put_f();
a.make_m();
cout << a.get_m() << "\n";
b.d();
b.put_f();
b.make_m();
cout << b.get_m() << "\n";
}
Если мы заменим режим доступа при наследовании класса Х на private, то функция void Z::d(void) не будет иметь право доступа к переменным i, j.
Если же мы заменим режим доступа при наследовании класса Z на private, не изменяя режим доступа при наследовании класса Х, то действие примера по сравнению с начальным не изменится.
Базовые классы создаются в том порядке, в котором они перечислены в списке базовых классов при объявлении производного класса Z.
Использование конструкторов при наследовании имеет свои особенности. Пока конструкторы базового классов не имеют аргументов, то производный класс может не иметь функцию-конструктор. Если же конструктор базового класса имеет один или несколько аргументов, каждый производный класс обязан иметь конструктор. Чтобы передать аргументы в базовый класс, нужно определить их после объявления конструктора базового класса.
В задании на программирование требуется определить классы и построить для них иерархию, а также продемонстрировать использование введенных конструкции при работе.
Дата добавления: 2015-07-25; просмотров: 53 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Class Teach: public Student | | | Задания к лабораторной работе 3 |