- •Int count;
- •Void SetCount ( int n)
- •Int GetCount(void)
- •Void changCount(int n)
- •Void ChangeCount(int n)
- •Int secondCount;
- •Void ChangCount(int n)
- •Int count;
- •Void fa(void);
- •Void fв(void);
- •Void fc(void);
- •Void f (void);
- •Void g(void);
- •Void Display(void)
- •Void Display(void)
- •Void Display(void);
- •Void tState::Display(void)
- •Void Display(void);
- •Void Display(void);
- •Void tPopulation::Display(void)
- •Наследуемые производным классом
- •Virtual void vf();
- •Virtual void vf();
- •Virtual void vf();
- •Virtual void Draw();
- •Virtual void Draw();
- •Virtual void Draw();
- •Int value;
- •Int GetValue(void) {return value; }
- •Int multiplier ;
- •Int GetValue(void) {return value *multiplier; }
- •Virtual void f1(void);
- •Void AbstractClass::f1(void)
- •Void MyClass::f2(void)
- •5://Неполные объявления класса
- •6: Class tElem ;
Void fв(void);
// “ ”
//внешние оп-ры не могут вызывать fв()
public:
int C;
// Доступен любим членам и всем,
//кто его использует
Void fc(void);
// “ ”
};
Член А закрыт в TAnyClass и доступен только другим членам этого класса, т.е.
функции-члены fa(), fb() и fc() имеют непосредственный доступ к А.
Конечно, внешние операторы и даже функции-члены производных классов не могут ссылается на А непосредственно. Вдобавок, функция-член fa(), может вызваться только другими членами TAnyClass. Внешние операторы не могут вызывать функцию-член fa(), являющуюся исключительной “частой собственностью” TAnyClass.
Член В и функция-член fb() защищены и доступны другим членам TAnyClass,
и любым членам производных классов. Конечно, вне класса защищенные члены имеют закрытый статус. Внешние оператор не могут иметь доступ к классу В или
функции-члену fb().
Член С и функция-член fc() открыты и свободны для прямого доступа всем членам TAnyClass, членов производных классов и оператором вне класса.
Открытые члены класса всегда доступные для всех, кто использует этот класс.
Спецификаторы доступа private, protected, и public могут также предшествовать имени базового класса в объявлении производного класса.
ПРИМЕР производного класса, основанного на TAnyClass
class TDerived: public TAnyClass {
// Новые данные-члены,
//функции-члены, конструкторы etc.
};
Спецификатор public можно заменить на private или protected.
По умолчанию члены наследуемого класса закрыты.
Влияние спецификатора на статус наследуемых членов.
Члены открытого базового класса в производном классе сохраняют свои спецификации доступа public, protected и private.
Открытые члены защищенного базового класса становятся защищенными в производном классе. Защищенные и закрытые члены сохраняют свои первоначальные спецификации доступа.
Все члены закрытого базового класса становятся закрытыми в производном классе независимо от первоначальной спецификации доступа этих членов.
случай, когда базовый класс объявлен закрытыми для производного класса, наиболее существенно влияет на наследуемые члены.
class TBase {
protected:
int x;
public:
int y;
…
};
производный класс
class TDerived: private TBase {
// Обратите внимание на статус
//“private”
public:
Void f (void);
// f() имеет доступ к членам x и y
//статус членов x и y изменился
//на private,
//т.к.TBase объявлен закрытым
//базовым классом
};
функция-член f() имеет доступ к членам x и y, наследованным из класса TBase. Однако, поскольку TBase объявлен закрытым базовым классом для класса TDerived, статус членов x и y изменился на private.
В наследовании
class TDescendant: public TDerived {
public:
Void g(void);
//g() не имеет доступа к членам x и y
};
функция-член g() не имеет доступа к членам x и y несмотря на то, что первоначально эти члены имели статус protected и public.
Квалификация доступа к отдельным членам
Спецификатор базового класса потенциально влияет на все наследуемые члены.
пример
class A {
public:
int x;
A() { count <<
“Inside A’ s constructor\n”; x = 0; }