Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

R.10.3 Абстрактные классы





Абстрактные классы дают средство для представления в языке общихпонятий, таких, например, как фигура, для которых могут использоватьсятолько конкретные их варианты, например, круг или квадрат. Кроме тогоабстрактный класс позволяет задать интерфейс, разнообразные реализациикоторого представляют производные классы. Абстрактным называется класс, который можно использовать толькокак базовый для некоторого другого класса, т.е. нельзя создатьникакого объекта абстрактного класса кроме того, который представляетбазовый класс для некоторого производного класса. Класс считаетсяабстрактным, если в нем есть хотя бы одна чистая виртуальнаяфункция. При описании класса виртуальная функция описывается какчистая с помощью спецификации-чистой ($$R.9.2). Чистую виртуальнуюфункцию не нужно определять, если только она явно не вызываетсяс помощью конструкции уточненное-имя ($$R.5.1). Рассмотрим пример: class point { /*... */ }; class shape { // абстрактный класс point center; //... public: point where() { return center; } void move(point p) { center=p; draw(); } virtual void rotate(int) = 0; // чистая виртуальная virtual void draw() = 0; // чистая виртуальная //... }; Абстрактный класс нельзя использовать как тип формального параметра,тип возвращаемого значения, а также как тип в операции явногопреобразования типа. Можно описывать указатели и ссылки на абстрактныйкласс, например: shape x; // ошибка: объект абстрактного класса shape* p; // нормально shape f(); // ошибка void g(shape); // ошибка shape& h(shape&); // нормально Чистые виртуальные функции и наследуются как чистые виртуальныефункции, например: class ab_circle: public shape { int radius; public: void rotate(int) { } // ab_circle::draw() чистая виртуальная функция }; Поскольку функция shape::draw() является чистой виртуальной функцией,то такой же будет по определению и функция ab_circle::draw(). Дляприведенного ниже описания класс circle не будет абстрактным, и уфункции circle::draw() где-то должно существовать определение. class circle: public shape { int radius: public: void rotate(int) { } void draw(); // должна быть где-то определена }; Функции-члены можно вызывать из конструктора абстрактного класса,результат прямого или косвенного вызова чистой виртуальной функциидля объекта, созданного с помощью такого конструктора, неопределен.







Дата добавления: 2015-09-04; просмотров: 339. Нарушение авторских прав; Мы поможем в написании вашей работы!




Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...


Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...


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


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Правила наложения мягкой бинтовой повязки 1. Во время наложения повязки больному (раненому) следует придать удобное положение: он должен удобно сидеть или лежать...

ТЕХНИКА ПОСЕВА, МЕТОДЫ ВЫДЕЛЕНИЯ ЧИСТЫХ КУЛЬТУР И КУЛЬТУРАЛЬНЫЕ СВОЙСТВА МИКРООРГАНИЗМОВ. ОПРЕДЕЛЕНИЕ КОЛИЧЕСТВА БАКТЕРИЙ Цель занятия. Освоить технику посева микроорганизмов на плотные и жидкие питательные среды и методы выделения чис­тых бактериальных культур. Ознакомить студентов с основными культуральными характеристиками микроорганизмов и методами определения...

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Studopedia.info - Студопедия - 2014-2025 год . (0.009 сек.) русская версия | украинская версия