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

1 ... 15 16 17 [ 18 ] 19 20 21 ... 227


В данном случае для наследования класса используется именно public. Полное описание эти каторов доступа будет дано позже.

1. Ниже приведена программа, которая определяет общий базовый класс fruit, описывающий некоторые характеристики фруктов. Этот класс наследуется двумя производными классами Apple и Orange. Эти классы содержат специальную информацию о конкретном фрукте (яблоке или апельсине).

Пример наследования классов ttinclude <iostream> ttinclude <cstring> using namespace std;

enum yn f no, yes);

enum color {red, yellow, green, orange};

voi (enum yn x) ; :-

char *c[ ] = { ;

red , yellow , green , orange if

Родовой класс фруктов class fruit {

В это овом классе все элементы открыты . , public:

enum yn annual;

enum yn perennial; .. . ..

enum yn tree; enum yn tropical; enum color clr;

char

*

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

class Apple: public fruit { enum yn cooking;

enum yn

enum yn eating; public: , , -.

void seta (char *n, enum color c, enum yn ck, enum yn crchy, enum yn e) ;

void ;

Производный класс апельсинов class Oranges lic fruit ( enum yn



enum yn sour; enum yn eating; public:

voi (char *n, enu color c, enum yn j, enum yn sr, enu yn e) ; void show ( ) ;

voi ta (char *n, enum color c, enum yn ck, enum yn crchy, enum yn e)

strcpy(name, n) ;

annual = no;

perennial = yes; tree = yes; tropical = no;

clr = c;

cooking = ck;

crunchy = crchy; eating = e;

}

voi to (char *n, enum colo t enum yn j, enum yn sr, enum yn

{ . .

strepy (name, n) ;

annual = perennial = yes; tree = yes; tropical = yes;

cl = c; juice =3; sour = sr;

eating = e;

I .. .

void Apple: :show()

cout name яблоко - это: \n ; cou Однолетнее растение: ; out (annual); cou Многолетнее растение: ; out (perennial) ; i---

cou Дерево: ; out(tree); >

cou Тропическое: ; out (tropical) ;

cou Цвет c[clr] \n ;

cou Легко приготавливается: ; out (cooking) ;

cou Хрустит на зубах: ; out (crunchy) ; cout Съедобное: ; out (eating) ; .fr: -. -

cout \n ; ., . .,.



voidOrange: :show{)

cout nam апельсин - это: \n ;

cout Однолетнее растение: ; out (annual);

cout Многолетнее растение: out (perennial);

cout Дерево: ; out (tree);

cout Тропическое: ; out (tropical);

cou << Цвет << c[clr] < \n ;

cou << Годится для приготовления сока: ; out(juice) cout << Кисльш: ; Out (sour) ;

cout Съедобный: out (eating) ;

cout \n ;

voi num yn x) {

if (x=no) cout нет\п ;

eise cout да\п ;

int mainO

{ -

Apple al, a2; Orange ol, o2;

al . seta( Краснаяпрелесть , red, no, yes, yes); a2. seta ( Джонатан , red, yes, no, yes) ; -,

ol Пуп , orange no, no, yes);

o2.3eto ( Валенсия , orange yes, no);

al.show 0 ; a2.show() ;

ol.showO ; o2.show() ;

return 0;

Как можно заметить, базовый класс fruit определяет несколько свойств, характерных для фруктов любого типа, (Конечно, чтобы сократить пример и таким образом приспособить его для книги, класс fruit отчасти упрощен.) Например, все фрукты растут на однолетних или многолетних растениях. Все фрукты растут на деревьях или на растениях другого типа, таких как лоза или куст. Все фрукты имеют цвет и название. Затем такой базовый класс наследуется классами Apple и Orange. Каждый из этих классов обеспечивает объект информацией, характерной для фруктов конкретного типа.

Этот пример иллюстрирует основной смысл наследования. Создаваемый здесь базовый класс определяет основные черты, связанные со всеми фруктами.



1 ... 15 16 17 [ 18 ] 19 20 21 ... 227

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