Комбінації доступу
Існує багато можливостей для доступу. Приведемо приклад, що показує, яка комбінація буде працювати, а яка – ні. Далі приведено лістінг програми 17.7
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<bios.h>
class A
{private:
int privdataA;
protected:
int protdataA;
public:
int pubdataA;
};
/////////////
class B:public A
{public:
void funcs()
{int a;
// a=privdataA; помилка
a=protdataA;
a=pubdataA;
}
};
///////////
class C:private A
{public:
void funct()
{int a;
//a=privdataA; // помилка
a=protdataA;
a=pubdataA;
}
};
///////////
int main()
{clrscr();
int a;
B objB;
// a=objB.privdataA;//помилка
// a=objB.protdataA;//помилка
a=objB.pubdataA;
C objC;
// a=objC.privdataA;//помилка
// a=objC.protdataA;//помилка
// a=objC.pubdataA; //помилка
bioskey(0);
return 0;
}
Програма 17.7
В програмі описаний клас А, що має дані зі специфікаторами доступу private, public, protected. Клас В і С є похідними класами. Клас В є загальним спадкоємцем, клас С – приватним спадкоємцем класу А. Методи похідних класів мають доступ до даних базового класу, оголошений як public чи protected. Для об’єктів похідних класів відсутній доступ до членів базового класу, оголошених як protected чи private.
Що нового у відмінностях між загальними і приватними похідними класами? Об’єкти загального спадкоємця В мають доступ до членів класу А, оголошених як public чи protected, а об’єкти приватного спадкоємця класу С мають доступ лише до членів, оголошених як private.
Якщо не вказувати специфікатор доступу при створенні класу, то буде використаний специфікатор private.
Дата добавления: 2015-08-26; просмотров: 610;