Программирование >>  Программирование на языке c++ 

1 ... 53 54 55 [ 56 ] 57 58 59 ... 159


БАЗОВЫЙ КЛАСС Б

Производный класс П

атрибут базового / класса \

>lic, 1 prote.

верхняя граница public

Производный класс П

publj

компоцент риЫ1с; protected;

KOMnoHeHT protectej

верхняя Граница protected

public,

/ KOMnoHCHT public; \ projected; \

; KOMnoHeHT protected; ! private:

KoMnoHCHTprivate;

Производны!! класс П

protected;

компонент ри№ KoMnoHeHT protecte(


верхняя гра-

ница private

privates

, компонент риЬис; \ KOMHOHeHTprotected;

Рис. 4.6. Изменения в производном рсласже атрибутов компонентов, наследуемых из базового класса, в зависимости от атрибута базового класса

#include <iostream.h> class Bl {

void f1 1() { cout Bl private\n ; } компонент

private

protected:

void f1 2{) { cout Bl protected\n ; ) компонент

protected

public:

void f1 3() { cout Bl public\n ; } компонент public

class B2 {

void f2 1() { cout 82 private\n ; } компонент private protected:



void f2 2() { cout В2 protected\n ; } компонент

protected

public:

void f2 3() { cout 82 public\n ; } компонент public

class 83 {

void f3 1() { cout 83 private\n ; } компонент

private

protected:

void f3 2() { cout 83 protected\n ; } компонент

protected

public:

void f3 3() { cout << B3 public\n ; } компонент public

class D : public 81,protected 82,private 83 {

void fd1{) { cout D private\n ; } компонент private protected:

void fd2() { cout << D protected\n ; } компонент

protected

public:

void fd3(); компонент public

описание public компонента класса D Результат: D private Результат: D protected ошибка

Результат: 81 protected Результат: 81 public ошибка

Результат: 82 protected Результат: 82 public ошибка

Результат: 83 protected Результат: 83 public

void D::fd3()

{ fdIO;

fd20;

f1 1()

f1 2{)

fi 3()

f2 1()

f2 2{)

f2 3()

f3 1()

f3 2()

f3 3{)



fi i();

fi 2();

fi 3();

f2 i{);

f2 2();

f2 3();

f3 1();

f3 2{);

f3 3();

void main(void)

class DD : public D { public:

void fdd(); компонент public

void DD;:fdd() описание public компонента класса DD ошибка

Результат: Bl protected Результат: Bl public ошибка

Результат: В2 protected Результат: В2 public ошибка ошибка ошибка

{ ВЗ ЬЗ; объявление объекта ЬЗ класса ВЗ b3.f3 3(); Результат: ВЗ public

В2 Ь2; объявление объекта Ь2 класса В2 b2.f2 3(); Результат: В2 public

D d; объявление объекта d класса D

d.f3 3(); ошибка

d.f2 3{); ошибка

DD dd; объявление объекта dd класса DD d.fd3(); вызов функции fd3() объекта d dd.fddO; вызов функции fdd() объекта dd

Приведем основные правила использования атрибутов для ограничения доступа к компонентам классов:

private компонент класса доступен только из компонентов-функций и friend функций того же класса;

> protected компонент дополнительно к private доступен из компонентов-функций и friend функций производного класса;

> public компонент доступен из любой функции; 172



1 ... 53 54 55 [ 56 ] 57 58 59 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика