Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Самоучитель С++ - Шилдт Г.

Шилдт Г. Самоучитель С++ — Спб.: БВХ-Петербург, 2003. — 688 c.
ISBN 5-7791-0086-1
Скачать (прямая ссылка): samouchitelc2003.djvu
Предыдущая << 1 .. 14 15 16 17 18 19 < 20 > 21 22 23 24 25 26 .. 206 >> Следующая

enum yn cooking; ienum yn crunchy; enum yn eating; public:
void seta (char enum color c, enum yn ck, enum yn crchy,
enum yn e) ;
void show();
// Производный класс апельсинов class Orange: public fruit ( enum yn juice;
Глава 2, Введение в классы _ 67
enum yn sour; enum yn eating; public:
void seto(char *n, enum color c, enum yn j, enum yn sr, enum yn e) ;¦ void show { ) ;
} Ї
void Apple: : seta {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;
void Orange: :seto(char *n, enum color cf enum yn j, enum yn sr, enum yn в)
{
strcpy (name, n) ;
annual = no; perennial = yes; tree = yes; tropical = yes; clr = с ; juice = j; sour = sr; eating = e;
void Apple: :show()
{
cout << name << ,т яблоко — это: " << м\пм;
cout << "Однолетнее растение: м; oat (annual);
cout « "Многолетнее растение: п; out (perennial) ;
cout << "Дерево: out(tree);
cout « "Тропическое: M; out (tropical) ;
cout << "Цвет: " << с [clr] << "\n";
cout « "Легко приготавливается: M; out (cooking) ;
cout << "Хрустит на зубах: out (crunchy) ;
cout << "Съедобное: M; out (eating);
cout « M\nf1;
I
62 _ Самоучитель C++
void Orange : : show()
{
cout « name « " апельсин — это: " « "\n";
cout « "Однолетнее растение: out (annual);
cout « "Многолетнее растение: out (perennial);
cout « "Дерево: "; out (tree);
cout « "Тропическое: out (tropical) ;
cout << "Цвет: " « с [clr] << ”\n";
cout << "Годится для приготовления сока: out(juice);
cout << "Кислый: out (sour) ;
cout « "Съедобный: out (eating) ;
cout « "\n";
I
void out (enum yn x)
{
if (x——no) cout << мнет\п";
else cout « "да\п";
N
int main()
{
Apple alf a2;
Orange ol, o2;
al . seta("Краснаяпрелесть", red, no, yes, yes); a2. seta ("Джонатан", red, yes, no, yes) ;
01. seto {"Пуп", orange, no, no, yes) ;
02.seto ("Валенсия", orange, yes, yes, no);
al. show () ; a2,show() ;
01.show() ;
02.show() ;
return 0;
}
Как можно заметить, базовый класс fruit определяет несколько свойств, характерных для фруктов любого типа, (Конечно, чтобы сократить пример и таким образом приспособить его для книги, класс fruit отчасти упрощен.) Например, все фрукты растут на однолетних или многолетних растениях. Все фрукты растут на деревьях или на растениях другого типа, таких как лоза или куст. Все фрукты имеют цвет и название. Затем такой базовый класс наследуется классами Apple и Orange. Каждый из этих классов обеспечивает объект информацией, характерной для фруктов конкретного типа.
Этот пример иллюстрирует основной смысл наследования. Создаваемый здесь базовый класс определяет основные черты, связанные со всеми фруктами.
Гпава 2. Введение в классы_____________________________________________________63
Производным классам предоставляется возможность обеспечения тех характеристик, которые являются характерными в каждом конкретном случае.
Эта программа раскрывает другой важный аспект наследования: производные классы не "владеют" базовым классом безраздельно. Он может наследоваться любым количеством классов.
1. Дан следующий базовый класс:
class area_cl { public:
double height; double width;
!;
создайте два производных класса rectangle и isosceles, которые наследуют базовый класс агеа_с1. Каждый класс должен включать в себя функцию агеа(), которая возвращает площадь соответственно прямоугольника (rectangle) и равнобедренного треугольника (isosceles). Для инициализации переменных height и width (высота и длина основания, соответственно) используйте конструктор с параметрами.
2.4. Указатели на объекты
До сих пор вы осуществляли доступ к членам объекта с помощью оператора точка (.). Если вы работаете с объектом, то это правильно. Однако доступ к члену объекта можно получить также и через указатель на этот объект. В этом случае обычно применяется оператор стрелка (->). (Аналогичным способом оператор стрелка (->) используется при работе с указателем на структуру.)
Вы объявляете указатель на объект точно так же, как и указатель на переменную любого другого типа. Задайте имя класса этого объекта, а затем имя переменной со звездочкой перед ним. Для получения адреса объекта перед ним необходим оператор &, точно так же, как это делается для получения адреса переменной другого типа.
Как и для любого другого указателя, если вы инкрементируете указатель на объект, он будет указывать на следующий объект такого же типа.
1. Простой пример использования указателя на объект:
Предыдущая << 1 .. 14 15 16 17 18 19 < 20 > 21 22 23 24 25 26 .. 206 >> Следующая